C - 阻止其他人写入文件

时间:2015-04-11 09:54:14

标签: c permissions fifo

我有多个进程写入FIFO文件。虽然其中一个是写作,但我想阻止其他进程写入文件。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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