歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 實用技巧一則 Linux系統對文件進行加鎖

實用技巧一則 Linux系統對文件進行加鎖

日期:2017/3/2 16:59:42   编辑:Linux服務器

當有多個工作線程要同時對一個文件進行寫操作時,如果不對該文件進行加鎖就可能會因誤操作而引起一系列的問題。

  解決這個問題有多種方法。我們這裡考慮使用文件鎖來對文件進行保護,因為這個方法簡單易行。具體方法是使用Flock函數進行加鎖:


if((flock(fd, LOCK_EX | LOCK_NB))< 0)
    {   
        std::cout<<"Log::The log have been locked"<<std::endl;
        return FALSE;
    }

  使用LOCK_EX是對文件描述符fd進行加鎖,如果成功,返回0,表示該文件還沒有被加鎖,可以對其進行寫操作。如果失敗返回-1,表示該文件已經被加鎖,正在被使用,故要等到其解鎖後才能使用。

  LOCK_NB表示非阻塞。加鎖後對該文件的具體寫操作如下:

if((flock(fd, LOCK_UN ))<0)
    {
        std::cout<<"Log::unlock the logfile error"<<std::endl;
        return FALSE;
    }

  這是在文件處理完後,對文件進行解鎖,解鎖後,其他線程就可以對該文件進行訪問了。

Copyright © Linux教程網 All Rights Reserved