0

据此我在程序内部使用 system() ( QProcess ) 函数来调用 gpio 程序。

有用。但我注意到我需要运行我的应用程序两次,实际上它只在第二次运行。正如这里所指出的,对 gpio 的调用似乎必须在另一个进程中完成。

是否应该使用QProcess::setupChildProcess()来解决这个问题?

我扩展了 QProcess 覆盖 setupChildProcess ,然后在我的应用程序的构造函数中实例化了 SandboxProcess 。不幸的是,这没有奏效。

class SandboxProcess : public QProcess
{
 protected:
     void setupChildProcess();
};
void SandboxProcess::setupChildProcess()
{
    QString program = "/usr/local/bin/gpio";
    QStringList arguments;
    arguments << "export" << QString::number(4) << "out";
    start(program, arguments);
}
4

1 回答 1

0

我想QProcess::setupChildProcess()没有帮助,因为它自己的进程在主应用程序进程之后开始。所以主应用程序仍然像未执行导出命令一样失败。

在这一点上,我看到两个选项:

  1. 制作一个ManagerApp,调用gpio(进行导出),然后调用(另一个)MyApp,它将实际访问导出的设备。
  2. 直接使用该gpio应用程序并stdout使用.signal/slotQProcess
于 2015-11-24T19:08:51.067 回答