Будет ли execv запускать это на переднем плане или на заднем плане? - PullRequest
1 голос
/ 27 апреля 2011

У меня есть в моей программе:

 execv (programname, (char **)argv);

Я не уверен, что команда действительно выполняется правильно.Как я могу узнать?Это работает в фоновом режиме?

Ответы [ 4 ]

3 голосов
/ 27 апреля 2011

Я настоятельно рекомендую приобрести книгу, которая относится к задаче, которую вы пытаетесь выполнить.Это будет очень долгий путь, если вы будете задавать новый вопрос о SO на каждом этапе пути.Мы любим помогать, но иногда книги лучше.

Расширенное программирование в UNIX - это превосходное приложение, содержащее полный образец оболочки, включая конвейеры.На самом деле, примеры программ доступны для скачивания бесплатно (но я все равно рекомендую забрать копию книги).

2 голосов
/ 27 апреля 2011

Поскольку execv заменяет текущий процесс, команда будет выполняться в том же состоянии, что и родительский процесс.

Один из способов узнать, выполняется ли ваша команда, - заставить команду распечатать что-то на консоли,если это возможно.

1 голос
/ 27 апреля 2011

Со страницы руководства execv.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ Если любая из функций exec () вернется, произойдет ошибка.Возвращаемое значение равно -1, и для определения ошибки будет установлено значение errno.

Итак, если вы получили возвращаемое значение, что-то пошло не так.

1 голос
/ 27 апреля 2011

Я полагаю, что execv () должен перекрывать текущий процесс с именем программы.Если вы хотите запустить программу в отдельном процессе, вы хотите использовать fork () или system () - я не верю, что последний является «стандартным», но кажется, что он вездесущ.

...