Qt QProcess

Qt QProcess

作为几乎对C++进行语言级别改变的框架Qt,进行了与Cocoa类似的封装,对了,其实感觉Qt对C++从语言特性的改变 上来说类似于Cocoa对于Objective C的改变,不同的是Qt没能统治C++世界。
Test1:

#include <QtCore/QCoreApplication>
#include <QtCore/QProcess>
#include <QtCore/QStringList>

int main(int argc, char *argv[])
{
     QString program = "cat";
     QStringList arguments;
      arguments <<"a" <<"b";

     QProcess *myProcess = new QProcess();
     myProcess->start(program, arguments);
      myProcess->waitForFinished();
     QByteArray output =  myProcess->readAllStandardOutput();
     printf("%s", (const char*)output);

     return 0;
}

QProcess就是Qt封装的进程类,需要特别说明的此类使用上在Qt4与Qt3是不同的。并且,有个问题是因为Qt现在几乎已经是纯面向GUI的界面库了,所以QProcess默认是进行命令行不输出的,这里转了个弯,先读出了输出,然后用printf输出了。

Test2:

#include <QtCore/QCoreApplication>
#include <QtCore/QProcess>
#include <QtCore/QStringList>

int main(int argc, char *argv[])
{
     QString program = "cat";
     QStringList arguments;
      arguments <<"a" <<"b";

     QProcess *myProcess = new QProcess();
     myProcess->setStandardOutputFile("c");
     myProcess->start(program, arguments);
      myProcess->waitForFinished();

     return 0;
}
但是看了示例,什么感觉?个人感觉Qt不愧是专门做API的,靠API吃饭的与靠卖硬件为生的公司就是不一样,API的设计实 在是恰到好处,简介简练,并且,最重要的是,够用!

Test3:


#include <QtCore/QCoreApplication>
#include <QtCore/QProcess>
#include <QtCore/QStringList>

int main(int argc, char *argv[])
{
     QString program = "/bin/cat";
     QStringList arguments;
      arguments <<"a" <<"b";

     QProcess *myProcess = new QProcess();
     QProcess *outProcess = new QProcess();
     myProcess->setStandardOutputProcess(outProcess);

      myProcess->start(program, arguments);
      outProcess->start(program);
      myProcess->waitForFinished();
      outProcess->waitForFinished();

     QByteArray output =  outProcess->readAllStandardOutput();
     printf("%s", (const char*)output);
     return 0;
}

总体上而言,Qt没有设计pipe对应的类,但是,对于一个函数可以解决的任务来说,很明显使用起来是更加简单的,像Cocoa那样,对这么简单的概念都进行相应的封装,其实有过度设计之嫌。。。。其实NSPipe也就2,3个函数,而且,如此例所示,其实,除了一个有 用外,NSPipe多出的那么几个都是因为多了NSPipe才出现的函数。。。。。悲哀中。。。。

总表

使用方式/代码量
Test1
Test2
Test3
SHELL
单 行5字符
单行7字符
单行9字符
C Runtime  Library's system
5行
5行
5行
Python's os.system
2行
2行
2行
Win32 API WinExec/ShellExecute
6行
6行
type限制
Win32 API CreateProcess
16行
16行
type限制
Objective C With Cocoa 
15行
23行
23行
Qt QProcess
16行
15行
20行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值