Получить мастер программу запуска ведомого в новом потоке - PullRequest
2 голосов
/ 18 января 2012

Я использую popen для запуска подчиненной программы на C ++ из мастер-программы.Однако при этом управление не возвращается к ведущей программе до тех пор, пока ведомое устройство не выполнит свои задачи.

Как запустить подчиненное устройство в отдельном сеансе (или отдельном потоке), поэтому ведущее устройство не будет вынужденоподождать, пока он не завершится, прежде чем управление будет возвращено ведущему устройству?

Я бы хотел, чтобы мастер мог запустить подчиненное устройство и затем завершить его, продолжив подчиненное устройство после выхода из ведущего устройства.

1 Ответ

3 голосов
/ 18 января 2012

Для этого вам нужно форкнуть основной процесс, а затем проверить pid_t, который возвращает команда fork . Оттуда вы можете сделать exec или popen, как вам угодно.

Когда вы вызываете fork, вызывающему процессу возвращается pid_t (это идентификатор только что созданного дочернего процесса). Если pid_t равно 0, то это новый процесс, и вы можете делать все, что пожелаете.

, например

pid_t childPid  = fork();
if( childPid == 0 )
{
    // Do your process create here.
    ...

    // Abort this process once it returns control.
    abort(); 
}
...