可以使用flockfile函数来处理进程吗

发布于 2024-12-10 15:40:32 字数 121 浏览 0 评论 0原文

大家好我想问一个关于flockfile函数的问题我正在阅读描述并了解到它是在线程中使用的。但我正在进行分叉,这意味着将会有不同的进程而不是线程我可以将flockfile与不同的进程一起使用,这有什么区别吗?

谢谢

Hello every one I want to ask a question about flockfile function I was reading the description and came to know that it is used in threads. but I am doing forking which means that there will be different process not threads can I use flockfile with different process does it make any difference?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独自唱情﹋歌 2024-12-17 15:40:32

flockfile 函数不会锁定文件,而是锁定进程用于访问文件的 FILE 数据结构。因此,这是关于进程在文件的地址空间中的表示,而不一定是关于文件本身。

即使在一个进程中,如果您在同一个文件上打开了不同的 FILE,您也可以同时写入该文件,即使您已经通过某种方式锁定了每个 FILE flockfile 的。

要锁定文件本身,请查看flocklockf,但请注意,它们通过同一进程的不同线程访问文件的效果规则很复杂。

The flockfile function doesn't lock a file but the FILE data structure that a process uses to access a file. So this is about the representation in address space that a process has of the file, not necessarily about the file itself.

Even in a process if you have different FILEs open on the same file, you can write simultaneously to that file, even if you have locked each of the FILEs by means of flockfile.

For locking on the file itself have a look into flock and lockf but beware that the rules of their effects for access files through different threads of the same process are complicated.

倾其所爱 2024-12-17 15:40:32

这些函数只能在一个进程内使用。

来自 POSIX 文档

总之,与其他线程共享 stdio 流的线程可以使用flockfile() 和funlockfile() 来使单个线程执行的I/O 序列保持捆绑。

该页面的所有其余部分都讨论了线程之间的互斥。不同的进程将具有不同的文件流输入/输出缓冲区,这种锁定实际上没有意义/有效。

These functions can only be used within one process.

From the POSIX docs:

In summary, threads sharing stdio streams with other threads can use flockfile() and funlockfile() to cause sequences of I/O performed by a single thread to be kept bundled.

All the rest of that page talks about mutual exclusion between threads. Different processes will have different input/output buffers for file streams, this locking wouldn't really make sense/be effective.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文