WiringPi gpio, вызываемый system(), должен использовать другой процесс?
В соответствии с этим я использую функцию 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);
}
1 ответ
Похоже QProcess::setupChildProcess()
не помогает, потому что его собственный процесс запускается после основного процесса приложения. Таким образом, основное приложение по-прежнему чувствует, что команда экспорта не была выполнена.
На данный момент я вижу два варианта:
- Сделать
ManagerApp
, который называютgpio
(сделать экспорт), а затем позвонить (другой)MyApp
который на самом деле будет иметь доступ к экспортируемым устройствам. - Использовать
gpio
приложение напрямую и слушать ихstdout
с помощьюsignal/slot
, с помощьюQProcess
,