2012-04-03 7 views
0

다음과 같은 프로그램이 있습니다. 나는 일관되게 텍스트 파일에 무언가를 써야하지만 프로그램이 끝나기를 언제 미리 결정할 수는 없다. 그래서 강제로 프로그램을 종료합니다.강제 종료시 파일에 쓰지 못함

FILE *f = fopen("text.txt", "w"); 
while (1) { 
    fprintf(f, "something"); 
    sleep(1000); 
} 

문제는 텍스트 파일이 비어 있다는 것입니다. 아무도 나에게 제안을 줄 수 있습니까? XCode를 사용하여 작업하고 있습니다.

+0

이 질문은 http://stackoverflow.com/questions/914613/what-exactly-is-the-effect-of-ctrl-c-on-c-win32-console-applications입니다. 특정 Windows하지만 두 번째 대답은 당신에게 아이디어를 줄 수 있습니다 –

답변

3

이후에 fflush(f)을 사용하십시오. 그렇지 않으면 인쇄 한 데이터가 여전히 stdio의 스트림 버퍼에 있고 아직 파일 시스템에 도달하지 않았습니다.

이렇게하면 성능이 크게 저하 될 수 있습니다.

0

파일을 쓰는 또 다른 방법은 추가 모드를 사용하고 필요없는 경우 파일을 닫는 것입니다.

while (1) { 
    FILE *f = fopen("text.txt", "a"); 
    if (f != NULL) { 
    fprintf(f, "something"); 
    fclose(f); 
    } 
    sleep(1000); 
} 

수면 단계에서 '강제 종료'하면 현재 파일이 열리지 않습니다.

관련 문제