无法永远分离线程c ++

时间:2017-03-18 20:56:24

标签: c++ multithreading file forever detach

我试图在下面的c ++程序中分离线程,这样即使在proccess终止之后,线程也会继续在文本文件中写入一些字符。 问题是我不能完成它: 当程序终止时,线程停止写入“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;
}

2 个答案:

答案 0 :(得分:0)

这是不可能的。当你的“主”线程终止时,所有它的“子线程”也会被终止。你想要的是fork()一个单独的过程来写这个文件。

答案 1 :(得分:0)

不可能。 detach仅将线程与其父线程分开,因此父线程无需担心清除它。一旦进程终止,所有线程都会死掉。