您的位置:首页 > 大数据 > 人工智能

Linux下,借助inotifywait工具,对文件目录进行监控

2015-01-14 16:25 288 查看
/////////////////////////////////////////////////////

// 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()

{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: