Linux下,借助inotifywait工具,对文件目录进行监控
来源:互联网 发布:vb.net timer控件 编辑:程序博客网 时间:2024/05/17 08:31
/////////////////////////////////////////////////////
// Name: DataDirMonitor
// Purpose: construct variable
/////////////////////////////////////////////////////
DataDirMonitor::DataDirMonitor(QObject *parent):
QObject(parent)
{
shellProcess = new QProcess();
queue = new QQueue<QByteArray>();
}
// Name: runShellProcess
// Purpose: run QProcess
/////////////////////////////////////////////////////
void DataDirMonitor::runShellProcess()
{
connect(shellProcess, SIGNAL(started()), this, SLOT(start_process()));
connect(shellProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(start_read_output()));
connect(shellProcess, SIGNAL(readyReadStandardError()), this, SLOT(start_read_err()));
connect(shellProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished_process(int,QProcess::ExitStatus)));
//shellProcess->execute(shellPath);
qDebug() << "inotifywait watch start...";
QStringList param;
param << "-mrq" << "--timefmt" << "'%F %T'" << "--format";
param << "'%T %w %e %f'" << "-e" << "create" << "/home/chen/Workspace/temp2/";
shellProcess->start("inotifywait",param);
if(false == shellProcess->waitForStarted())
{
qDebug() << "this process failed to call";
}
}
// Name: start_process
// Purpose: start_process
/////////////////////////////////////////////////////
void DataDirMonitor::start_process()
{
}
/////////////////////////////////////////////////////
// Name: start_read_output
// Purpose: start_read_output
/////////////////////////////////////////////////////
void DataDirMonitor::start_read_output()
queue->enqueue(output);
}
// Name: start_read_err
// Purpose: start_read_err
/////////////////////////////////////////////////////
void DataDirMonitor::start_read_err()
{
QByteArray err = shellProcess->readAllStandardError();
qDebug() << err;
}
/////////////////////////////////////////////////////
// Name: finished_process
// Purpose: finished_process
/////////////////////////////////////////////////////
void DataDirMonitor::finished_process(int intValue, QProcess::ExitStatus)
{
shellProcess->write("quit");
shellProcess->kill();
if(intValue == QProcess::NormalExit)
{
qDebug() << "NormalExit";
}
}
// Name: ~DataDirMonitor
// Purpose: ~DataDirMonitor
/////////////////////////////////////////////////////
DataDirMonitor::~DataDirMonitor()
{
}
// Name: DataDirMonitor
// Purpose: construct variable
/////////////////////////////////////////////////////
DataDirMonitor::DataDirMonitor(QObject *parent):
QObject(parent)
{
shellProcess = new QProcess();
queue = new QQueue<QByteArray>();
}
// Name: runShellProcess
// Purpose: run QProcess
/////////////////////////////////////////////////////
void DataDirMonitor::runShellProcess()
{
connect(shellProcess, SIGNAL(started()), this, SLOT(start_process()));
connect(shellProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(start_read_output()));
connect(shellProcess, SIGNAL(readyReadStandardError()), this, SLOT(start_read_err()));
connect(shellProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished_process(int,QProcess::ExitStatus)));
//shellProcess->execute(shellPath);
qDebug() << "inotifywait watch start...";
QStringList param;
param << "-mrq" << "--timefmt" << "'%F %T'" << "--format";
param << "'%T %w %e %f'" << "-e" << "create" << "/home/chen/Workspace/temp2/";
shellProcess->start("inotifywait",param);
if(false == shellProcess->waitForStarted())
{
qDebug() << "this process failed to call";
}
}
// Name: start_process
// Purpose: start_process
/////////////////////////////////////////////////////
void DataDirMonitor::start_process()
{
}
/////////////////////////////////////////////////////
// Name: start_read_output
// Purpose: start_read_output
/////////////////////////////////////////////////////
void DataDirMonitor::start_read_output()
{
//读取inotifywait输出的log,对新建的文件信息进行收集
QByteArray output = shellProcess->readAllStandardOutput();queue->enqueue(output);
}
// Name: start_read_err
// Purpose: start_read_err
/////////////////////////////////////////////////////
void DataDirMonitor::start_read_err()
{
QByteArray err = shellProcess->readAllStandardError();
qDebug() << err;
}
/////////////////////////////////////////////////////
// Name: finished_process
// Purpose: finished_process
/////////////////////////////////////////////////////
void DataDirMonitor::finished_process(int intValue, QProcess::ExitStatus)
{
shellProcess->write("quit");
shellProcess->kill();
if(intValue == QProcess::NormalExit)
{
qDebug() << "NormalExit";
}
}
// Name: ~DataDirMonitor
// Purpose: ~DataDirMonitor
/////////////////////////////////////////////////////
DataDirMonitor::~DataDirMonitor()
{
}
0 0
- Linux下,借助inotifywait工具,对文件目录进行监控
- inotifywait实现目录监控
- inotifywait监控目录更改
- inotifywait实现目录监控
- linux inotifywait
- Linux系统下创建任务,对指定目录文件进行自动压缩存档
- Linux下使用Shell对网络流量进行监控
- Linux环境下如何通过WMI对windows进行监控
- Linux下对文件进行编码转换
- 对当前目录下所有文件进行压缩代码
- 对某一目录下所有文件进行打架包
- 对目录下的文件按时间进行排序
- Linux下对目录进行操作所需权限
- Linux下使用inotify实现对文件的监控
- linux下监控工具介绍
- linux下网络流量监控工具
- linux下性能监控工具
- Linux下性能监控工具
- Zookeeper客户端编程趣味小例子——网络聊天
- linux中find命令配合rm删除某天前的文件
- VS2013 MFC Windows 程序设计之客户区鼠标消息(里面没内容)
- dos 对字符串的处理
- ejb 3 开发快速入门 3 配置jboss数据源
- Linux下,借助inotifywait工具,对文件目录进行监控
- 利用jqueryRotare实现抽奖转盘
- 设置安装版Tomcat的JVM参数
- 动态规划1
- Github for Windows使用图文教程
- Robotium用例通过代码自动解锁屏幕
- echarts入门实例
- C语言中的预编译宏定义
- Scanner