我试图模拟一个竞争条件(这是一个正确的术语?),以便以后用信号量修复它。
我有一个master.c进程:
#…
因为 stdio 在写入文件时默认使用缓冲输出,并且每个进程中打印的所有内容都适合单个缓冲区。在进程退出之前,缓冲区不会被刷新,然后将其写为单个缓冲区 write() call,小到足以原子地写入文件。
stdio
write()
呼叫 fflush(p_file); 每次之后 fprintf() 你会得到更多混合的结果。或者打电话 setvbuf() 禁用缓冲。
fflush(p_file);
fprintf()
setvbuf()