программа не выполняет ничего после вызова system () - PullRequest
2 голосов
/ 02 июля 2011

Я вызываю команду через системный (командный) вызов.Но никакой другой код не выполняется после этого системного вызова.

Почему так?Я подумал, что system () создаст дочерний процесс для выполнения «команды», и моя программа (родительская часть «command» -child) продолжит выполнение кода после этого.

Не правильно ли я понимаю system ()?

код:

printf("before \n");
system("tail -f filename");       /* long lived - never returns */
printf("after \n");

Здесь я не вижу после распечатки.

Ответы [ 2 ]

8 голосов
/ 02 июля 2011

Функция system(3) заставляет ваш процесс ожидать завершения дочернего процесса.

Редактировать 0:

Вы должны использовать классическую пару fork(2) и execve(2) за то, что вы хотите сделать.Вы также можете проверить, предоставляет ли ваша библиотека C POSIX spawn(3).

Редактировать 1:

Просмотрите waitpid(2), чтобы сохранить родительвокруг.

0 голосов
/ 02 июля 2011

Вы должны выполнить fork (2), чтобы продолжить выполнение кода.

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