многопоточность — не может отсоединить поток навсегда

Я пытаюсь отсоединить поток в нижеприведенной программе на 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;
}

0

Решение

Это невозможно. Когда ваш «основной» поток завершается, все его «дочерние потоки» также уничтожаются. То, что вы хотите, это fork() отдельный процесс, чтобы сделать это запись в файл.

0

Другие решения

Невозможно. detach только отделяет поток от его родительского потока, поэтому родительскому потоку не нужно беспокоиться о его очистке. Как только процесс умирает, так же, как и все его потоки.

0

По вопросам рекламы [email protected]