天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 65|回复: 0

C++判断文件是否被占用

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
C++判断文件是否被占用
/*
* lsof | grep filename
* 如果有输出(或者退出状态$?=0) 表示filename正在被操作
* 如果没输出(或者退出状态非0) 表示filename没在被操作
*/
static int get_file_state(CString filename)  //
{
    char buf[10240] = {0};
    FILE *pf = NULL;

   CString str_filename = _T("lsof | grep ") + filename;
   size_t iLengh = str_filename.GetLength() * 2 + 1;
   size_t iConverted = 0;
   char * str_cmd = new char[iLengh];


    if( (pf = open(str_cmd , _T( "r"))) == NULL )
    {
        return -1;
    }

    std::string str_result;
    while(fgets(buf, sizeof buf, pf))
    {
        str_result += buf;
    }

    close(pf);

        pf.close();   

    unsigned int isize =  str_result.size();
    if(isize > 0 && str_result[isize - 1] == '\n')  // linux
    {
        str_result = str_result.substr(0, isize - 1);
    }

    if(str_result.find(str_cmd) == std::string::npos )//不存在。
    {
            return 0;
    }
        return -1;
}

 

 

 

 

C++判断文件是否被占用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:29 , Processed in 0.153255 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表