2017-03-18 9 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

これはできません。あなたの "メイン"スレッドが終了すると、すべての "子スレッド"も殺されます。あなたが望むのは、fork()に、このファイルへの書き込みを行う別のプロセスです。

+0

fopen_sはVSが使用していることを示しているため、Windowsにはfork()コールがないため、おそらくCreateProcess()が必要です。 –

0

できません。 detachはスレッドを親スレッドから分離するだけなので、親スレッドはスレッドのクリーンアップを心配する必要はありません。プロセスが終了すると、すべてのスレッドも終了します。

関連する問題