我正在尝试根据文件内容退出while循环。文件存在且为空,或在程序初始化时填充垃圾。我在外部修改文件,并希望循环在发生这种情况时根据文件的修改方式退出。
目前,我启动了一些线程,打开我正在阅读的文件。检查第一个字节。如果它是一个,我退出,否则启动循环。
当我想退出时。我在第一个字节中放了一个,但看起来我的文件永远不会再读了。
while循环语句和变量定义每个循环看起来像:
while(strcmp(fileContents, "1\n") != 0){
lengthRead = fread(fileContents, 1, size, isRecording);
fseek(isRecording, 0, SEEK_SET);
我知道外部退出while循环可能有更简单的方法,但基于我的项目架构,我能看到如何控制它的唯一方法是根据文件内容退出。
答案 0 :(得分:1)
如果您的其他线程使用fwrite()
写入文件,请不要忘记调用fflush()
将更改实际写入文件(否则,它们可以保留在内存中缓冲)。< / p>
正如Dave Jarvis所说,还有许多其他选择与另一个线程同步。例如,如果您正在使用pthreads,pthread_cond_signal和pthread_cond_wait。