inotify无法启动观察程序

时间:2019-09-12 15:31:13

标签: inotify file-sharing

全部

我正在尝试使用inotify编写文件监视服务。这是我的代码:

m_fd = inotify_init1( IN_NONBLOCK );
if( m_fd == -1 )
{
    syslog( LOG_ERR, "Failed to initialize inotify" );
    m_isOK = false;
}
else
    syslog( LOG_DEBUG, "Inotify initialize successfully" );
m_wd = inotify_add_watch( m_fd, log.c_str(), IN_CLOSE );
if( m_wd == -1 )
{
    std::string error = "Failed to add log watching to inotify, error is " + std::to_string( errno );
    syslog( LOG_ERR, error.c_str() );
    m_isOK = false;
}
else
    syslog( LOG_DEBUG, "Watching system intrusion file log added" );

当我尝试执行它时,它确实成功运行了一次。但是,每次之后我尝试运行它,我都会进入日志:

Failed to add log watching to inotify, error is 2.

即使重新启动系统后,也会发生这种情况。

由于错误2是File sharing错误,我想为了使lock_file成功,我需要删除系统上存在的inotify_add_watch()

有人可以帮忙吗?还是我完全错了,还有别的吗?

TIA!

[编辑]

我试图查看何时在磁盘上创建文件,以便可以开始处理它。我使用了错误的口罩吗?

还修改了该行:

m_wd = inotify_add_watch( m_fd, log.c_str(), IN_CLOSE );

阅读:

m_wd = inotify_add_watch( m_fd, log.c_str(), IN_CREATE | IN_CLOSE );

不会改变结果。我仍然遇到errno为2的问题。

[/ EDIT]

1 个答案:

答案 0 :(得分:1)

因此,显然,我无法监视文件的文件创建。

我必须查看适当的目录,然后检查inotify_event以查看正在创建的文件名。

感谢您的阅读,并为您的访问量感到抱歉。