0

我正在使用Fanotify示例代码来处理文件打开和关闭事件。在 handle_events() 函数中,我被称为我的函数 checkFileIsExecutable()。调用函数后,我的系统挂起,需要硬重启。我正在提供用于检查可执行文件的功能。我添加了我的挂起代码作为参考,请检查它并帮助我解决这个问题。

checkFileIsExecutable(const char *filepath)
{
        string data;
        FILE* stream;
        char buffer[64];
        char res[64];

        if(sFileName.empty())
        {
                return "error";
        }

        string cmd("file ");
        cmd.append(filepath);

        cout<< "Going to execute cmd: "<< cmd.c_str()) <<endl;

        stream = popen(cmd.c_str(), "r");             //here my code is hangs 
        if(stream)
        {
                while(!feof(stream))
                {
                        if(fgets(buffer, 64, stream) != NULL)
                        {
                               data.append(buffer);
                        }
                }
                pclose(stream);
         }

         strcpy(res, data.c_str());

        if(0 == strcasecmp(res, "executable"))
        {
                cout << "File is executable\n" << endl;
                return true;
        }

       return false;
}

错误代码:

要执行 cmd:file /root/Test/access 挂起....

4

0 回答 0