Я порождаю дочерний процесс из моего приложения:
QString strFullPath(strModulesPath
+ strModule.toString());
QByteArray baFullPath(strFullPath.toLatin1())
,baSeconds((QString::number(lngSeconds))
.toLatin1());
char** ppEnviron
,* pszFullPath = baFullPath.data()
,* pszSeconds = baSeconds.data()
,* paryszArgs[] = {pszFullPath
,pszSeconds
,nullptr};
posix_spawn_file_actions_t* pfileActionsp;
posix_spawnattr_t* pAttr;
pid_t pid = 0;
pfileActionsp = pAttr = nullptr;
int intRC = posix_spawn(&pid
,pszFullPath
,pfileActionsp
,pAttr
,paryszArgs
,ppEnviron);
Запускаемое приложение указывается в baFullPath и содержит:
~/XMLMPAM/config/modules/mdFileIO
PID, возвращенный после вызоваposix_spawn допустим, и intRC возвращает 2.
Однако я не вижу процесса, указанного в «Мониторе активности», родительский процесс указан, но не дочерний.
Где он и как можноЯ вижу вывод из консоли, поскольку он не отображается в той же консоли, что и родительский процесс.
[править] Может показаться, что «posix_spawn» не поддерживает порождение с использованием префикса пути »~", поэтому я попробовал полный путь:
/Users/Simon/XMLMPAM/config/modules
Я наблюдал в отладчике, и теперь возвращаемое значение равно 14, что согласно списку ошибок" Bad Address ".
[edit2] Как отметил Дэвид Шварц, он не работал, потому что я не инициализировал ppEnviron.