Я пытаюсь отсоединить поток в нижеприведенной программе на 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;
}
Это невозможно. Когда ваш «основной» поток завершается, все его «дочерние потоки» также уничтожаются. То, что вы хотите, это fork()
отдельный процесс, чтобы сделать это запись в файл.
Невозможно. detach
только отделяет поток от его родительского потока, поэтому родительскому потоку не нужно беспокоиться о его очистке. Как только процесс умирает, так же, как и все его потоки.