2017-03-18 2 views
0

아래의 C++ 프로그램에서 스레드를 분리하려고 시도합니다. 그래도 프로세스가 종료 된 후에도 스레드는 텍스트 파일에 일부 문자를 계속 작성합니다. 문제는 내가 끝내지 못한다는 것입니다. 프로그램이 종료되면 스레드는 "file.txt"파일에 쓰는 것을 멈 춥니 다. 그가 저를 도와 주시겠습니까? 아니면 전혀 가능하지 않습니까?스레드를 영원히 분리 할 수 ​​없습니다. C++

#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

이것은 불가능합니다. "main"스레드가 종료되면 "child threads"도 모두 종료됩니다. 당신이 원하는 것은 fork()이 파일에 쓰기를 별도의 프로세스입니다.

+0

fopen_s 종류의 그가 VS를 사용하고 있음을 나타내므로 Windows에 fork() 호출이 없으므로 그는 아마도 CreateProcess()를 원합니다. –

0

불가능합니다. detach은 스레드를 상위 스레드와 분리하기 때문에 상위 스레드는 스레드를 정리하는 것에 대해 걱정할 필요가 없습니다. 프로세스가 종료되면 모든 스레드도 종료됩니다.

관련 문제