大家好我想问一个关于flockfile函数的问题我正在阅读描述并且知道它是在线程中使用的。但是我在做分叉意味着会有不同的进程而不是线程我可以使用flockfile和不同的进程吗会有什么区别吗?
由于
答案 0 :(得分:3)
flockfile
函数不会锁定文件,而是锁定进程用来访问文件的FILE
数据结构。所以这是关于进程对文件的地址空间表示,而不一定是文件本身。
即使在同一个文件中打开了不同FILE
的进程,即使您已通过{ 1}}。
要锁定文件本身,请查看FILE
和flockfile
,但请注意,通过同一进程的不同线程访问文件的效果规则很复杂。
答案 1 :(得分:1)
这些功能只能在一个过程中使用。
来自POSIX docs:
总之,与其他线程共享stdio流的线程可以使用flockfile()和funlockfile()来使单个线程执行的I / O序列保持捆绑。
该页面的其余部分讨论了线程之间的互斥问题。不同的进程将为文件流提供不同的输入/输出缓冲区,这种锁定实际上没有意义/有效。