【发布时间】:2014-01-25 14:11:31
【问题描述】:
我有一个 c 程序正在记录到文件 /var/log/test.log
我有一个单独的线程,它将读取文件的内容并通过 http 帖子将它们提交到我的服务器。这大约每小时发生一次。我的问题是从该线程中清除文件的内容(例如fclose(fopen("/var/log/test.log", "w"))会导致实际将数据写入文件的主线程中的任何错误吗?
如果这确实会导致错误,那么最好的选择是什么?每次将数据发送到服务器时,都应清除(但不删除)该文件。
我认为这并不重要,但我运行的是 OS X 10.9
【问题讨论】:
-
为什么需要从单独的线程中清除它?
-
@InsertNameHere 因为它只需要在每次发送数据时清除,并且由于它在计时器上而发生在不同的线程中
-
@WilliamPursell 将在文件打开并在主线程中写入时从另一个线程调用
ftruncate导致错误? -
这取决于您对“错误”的定义,但我强烈怀疑答案是否定的。从操作系统的角度来看应该不会有任何错误。
标签: c multithreading macos file fwrite