为什么有时两个脚本同时启动?

时间:2016-04-24 14:38:05

标签: bash qt qprocess

解释:我正在尝试创建一个守护程序脚本,该脚本将会正在观看 Watch 文件夹,如果我删除了一些文件,它应该运行脚本。

问题:有时在我删除文件后 - 没有任何反应

脚本:脚本正在使用Watch文件夹中的文件并在之后删除它们。

其他问题:我是否必须手动删除 mc 对象,否则会自动完成?

main.cpp

#include "widget.h"
#include <QFileSystemWatcher>
#include <QApplication>
#include <QDebug>

#include "myclass.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QFileSystemWatcher watcher;
    watcher.addPath("/home/user/Documents/Watch/");



    MyClass* mc = new MyClass;

    QObject::connect(&watcher, SIGNAL(directoryChanged(QString)), mc, SLOT(showModified(QString)));



    return app.exec();
}

myclass.h

#ifndef MYCLASS
#define MYCLASS

#include <QWidget>
#include <QDir>
#include <QDebug>
#include <QProcess>

class MyClass : public QWidget
{
    Q_OBJECT

public:
    MyClass(QWidget* parent=0)
        :QWidget(parent){}


    ~MyClass(){}

public slots:
    void showModified(const QString& str)
    {

        if(QDir("/home/user/Documents/Watch/").entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries).count() == 0)
        {
            qDebug()<<"EEEMPTYYYY!!!!!!!!!!!!!!!!!!!\n";
            _status = false;
        }

         Q_UNUSED(str)

        if (_status == false)
        {

         _status = true;

         QProcess *proc = new QProcess();
         proc->setWorkingDirectory("/home/user/Documents/");
         proc->startDetached("/home/user/Documents/script.sh");
         proc->waitForFinished();


         delete proc;


        }
    }

private:
    bool _status = false;
};


#endif // MYCLASS

0 个答案:

没有答案