zoukankan      html  css  js  c++  java
  • QT下实现对Linux Shell调用的几种方法

     使用QProcess QThread

    ============================================

    #include <QProcess>
    int main()
    {
    QProcess::execute("ls");
    return 0;
    }

    ============================================

     

    QProcess *poc = new QProcess; 
    poc-> start( "ping 222.207.53.1> hh "); 
    打开hh文档 读取里面的内容给QTextEdit

    ============================================

    QProcess *proc = new QProcess;
    proc-&gt;addArgument("qmake");
    proc-&gt;addArgument("-o");
    proc-&gt;addArgument("/home/sjq/work/jobs/test6/test/Makefile");
    proc-&gt;addArgument("/home/sjq/work/jobs/test6/test/cmd.pro");
    if(proc-&gt;start())
    {
    cout&lt;&lt;"error"&lt;&lt;endl;
    }

    其中使用方法就在于对QProcess 的调用如

    mkdir TEST

    QProcess *proc = new QProcess;
    proc-&gt;addArgument("mkdir");
    proc-&gt;addArgument("TEST");

    if(proc-&gt;start())
    {
    cout&lt;&lt;"error"&lt;&lt;endl;
    }

    ============================================

    另外的一种使用方法,一种交换

    while ( proc-> isRunning()) 

    stringOut = proc-> readLineStdout(); 
    textEdit-> append( stringOut ); 

    这样能读出来,但是不知道怎么停下来,在读的proc执行的过程中,窗口被冻结 
    最后用了qApp-> processEvents()来解决的 
    我再去研究研究pthread.

    ============================================

    下面是使用Qthread的一种方法

    ===============================================

    #include <QProcess>
    #include <QThread>
    class MyThread : public QThread
    {
    public:
    void run();
    };

    void MyThread::run()
    {
    QProcess::execute("service lighttpd restart");
    }

    int main()
    {
    MyThread *thread=new MyThread;
    thread->start();
    }

    ============================================

    #include <QProcess>
    #include <QThread>
    #include <QString>
    #include <QStringList>
    class MyThread : public QThread
    {
    public:
    void run();
    };

    void MyThread::run()
    {
    QProcess *testc=new QProcess;
    QString program = "rm";
    QStringList arguments;
    arguments << "./a.txt";
    testc->start(program, arguments);
    }

    int main()
    {
    MyThread *thread=new MyThread;
    thread->start();
    }

    细化操作--不打印显示任何的操作结

    http://blog.csdn.net/taiyang1987912/article/details/46293929

  • 相关阅读:
    leetcode 268. Missing Number
    leetcode 189. Rotate Array
    leetcode 118. Pascal's Triangle 、119. Pascal's Triangle II 、120. Triangle
    HDU高精度总结(java大数类)
    一起talk C栗子吧(第八十七回:C语言实例--使用管道进行进程间通信概述)
    iOS敏捷开发之道,经常使用的宏定义总结
    360 网络攻防 hackgame 解题报告(通关)
    打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
    数列求和
    指尖上的电商---(11)Windows平台部署SolrCloud
  • 原文地址:https://www.cnblogs.com/findumars/p/5782446.html
Copyright © 2011-2022 走看看