【发布时间】:2013-07-02 17:28:02
【问题描述】:
这是my previous question here 的后续问题,针对 UNIX。
我想知道进程打开的文件描述符是否可以安全地用于分叉进程。
我通过同时运行数百个进程运行了一些测试,所有进程都连续写入同一个文件描述符。我发现:
- 当
fwrite()调用达到8192字节时,所有调用都完美序列化,文件正常。 - 当
fwrite()调用超过 8192 字节时,字符串会被分成 8192 字节的块,这些块会随机写入文件,最终会损坏。
我尝试使用flock(),但没有成功,因为每个进程都试图锁定/解锁相同的文件描述符,这没有意义。结果是一样的。
有没有办法在所有进程之间安全地共享文件描述符,并正确序列化所有fwrite() 调用?
【问题讨论】:
标签: unix multiprocessing file-descriptor