QProcess如何打开一个需要用超级用户权限的外部程序
我的代码是在linux下写的,有一个程序,只有在sudo ./burner才可以正常运行,./burner出现的是QObject::killTimer(): Error: timer id 2 is not valid for object 0xbfbf96f0 (), timer has not been killed这个错误提示然后退出。现在我的需求是要写一个Qt的ui程序打开这个burner程序并使它正常运行,该怎么办啊 --------------------编程问答-------------------- 跪求大神们帮忙啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --------------------编程问答-------------------- gksu .... --------------------编程问答--------------------
恩,我用了,但是因为starDectched这个是非阻塞的,导致./burner还没有起来,界面就已经开始出现了,因为还有一个问题是ui程序要和burner这个server端程序在启动之初进行socket连接,burner要经过输密码,就比ui启动慢了很多,所以,socket就连接不成功,整个过程就无法执行,该怎么办呢? --------------------编程问答--------------------
我的代码:
QStringList list;
list << "-S";
#ifdef __linux
//QProcess::startDetached("./core",list,"",&core_pid);
QProcess::startDetached("gksu ./core",list,"",&core_pid);
#else
QProcess::startDetached("core.exe",list,".",&core_pid);
#endif
ui->setupUi(this);
望大神们帮忙看看,可以解决了这个问题 --------------------编程问答-------------------- 一般 我是 做一个线程,不停的连接,或者 设置链接的 超时时间为 15 分钟 之类的。 --------------------编程问答--------------------
恩,启动线程的方法等我这条路实在走不通了再进行尝试吧。现在想和您讨论一下我的想法。
在理论上来讲,我要启动一个超级用户权限的程序,就上上面代码的core
QStringList list;
#ifdef __linux
QProcess::start("gksu ./core",list);
while(!p->waitForStarted(4000)){qDebug() << "unstarted";}
#else
QProcess::startDetached("core.exe",list,".",&core_pid);
#endif
ui->setupUi(this);
这个代码在理论上来讲,应该是可以实现我想要实现的功能的,但是现在程序在运行到p->waitForStarted时出现段错误。您说这会是什么问题呢? --------------------编程问答-------------------- where is the definition of p, is p a NULL pointer? --------------------编程问答--------------------
我把p = new QProcess(this);注销掉了,但是这个不是影响程序的关键,我加了也是不管用啊! --------------------编程问答--------------------
程序运行结果:
unstarted
程序异常结束。
补充:移动开发 , Qt