无法永远分离线程c ++
Posted
技术标签:
【中文标题】无法永远分离线程c ++【英文标题】:Can't detach thread forever c++ 【发布时间】:2017-03-18 20:56:23 【问题描述】:我试图在下面的 c++ 程序中分离线程,这样即使在进程终止后,线程也会继续将一些字符写入文本文件。 问题是我无法完成它: 当程序终止时,线程停止写入“file.txt”文件。你能帮我解决这个问题吗?或者这根本不可能?
#include<thread>
#include<stdio.h>
using namespace std;
void printToFile()
FILE *file;
for (int i = 0; true; i++)
fopen_s(&file, "file.txt", "w");
fprintf(file, "%s%d", "n: ",i);
fclose(file);
return;
int main()
thread t(printToFile);
t.detach();
return 0;
【问题讨论】:
【参考方案1】:这是不可能的。当您的“主”线程终止时,它的所有“子线程”也会被杀死。您想要的是 fork()
一个单独的进程来执行此写入文件。
【讨论】:
由于 fopen_s 表明他正在使用 VS,他可能想要 CreateProcess(),因为 Windows 没有 fork() 调用。【参考方案2】:不可能。 detach
只是将线程与其父线程分开,因此父线程无需担心清理它。一旦一个进程死亡,它的所有线程也会死亡。
【讨论】:
以上是关于无法永远分离线程c ++的主要内容,如果未能解决你的问题,请参考以下文章