C - 阻止其他人写入文件

标签 c permissions fifo

我有多个进程正在写入 FIFO 文件。当其中一个进程正在写入时,我想阻止其他进程写入该文件。

我正在使用读取和写入调用来访问 FIFO 文件。

示例:有两个 C 程序 Server.c 和 Client.c。多个客户端正在写入服务器程序创建的 FIFO 文件。服务器应该能够随时读取和写入该文件,因为一次只有一个客户端可以访问该文件。

最佳答案

尝试使用锁定机制。尝试并发读取和独占写入机制 (CREW) 实现。

 void ReaderThread::run()
    {
        ...
        semaphore++;
        read_file();
        semaphore--;
        ...
    }

    void WriterThread::run()
    {
        ...
        semaphore += MaxReaders;
        write_file();
        semaphore -= MaxReaders;
        ...
    }

通过此解决方案,最多可以有 MaxReaders 线程同时读取文件。一旦写入线程想要修改文件,它就会尝试分配所有信号量资源,从而确保在写入操作期间没有其他线程可以访问该文件。

关于C - 阻止其他人写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576484/

相关文章:

c - 使用 airpcap 和 pcap 验证 CRC

c - 当 i 已经用 0 和 if 条件初始化时,i 的值是多少?为什么?

java - Android MANAGE_EXTERNAL_STORAGE 权限被 Google Playstore 拒绝用于社交网络应用

ios - 从我启动的作业中收到错误代码 126

git fetch 权限不足,无法将对象添加到存储库数据库 .git/objects?

linux - 记录到非阻塞命名管道?

c - 在 C 程序中获取 shell 脚本的退出代码

fifo - KDB:先进先出方式的pnl

c++ - 在 OSX 上使用 PortAudio 写入 fifo 并使用 ffmpeg 读取

c - 加载带模块参数的驱动模块时,模块参数存储在哪里