LINUX.ORG.RU

нужен пример реализации system() (+)


0

0

Хочу запустить какую-нибудь программу с параметрами, получив в итоге pid процесса. system из stdlib.h делает все хорошо, но pid не дает. Сделал свою реализацию с execvp, но что-то не очень работает(запускаемый процесс). Может у кого есть сабж(который поможет)?


Ну так и возьми исходник system из glibc. Поправить её, чтоб отдавала pid, вряд ли составит большой труд.

Teak ★★★★★
()


А зачем тебе PID? Суть system(3) в том, что она блокируется до
завершения child-процесса и возвращает его статус завершения.
PID child-процесса нет никакого смысла возвращать - процесс уже
завершился к моменту возврата из system().

Если же тебе надо просто что-то system-подобное но без блокировки
parent-процесса то (как было уже выше сказано) возьми исходник
из glibс и модифицируй как тебе надо.

Если тебе надо с разъяснениями - то APUE Стивенса тебе в руки ;-)
Если Стивенса нет, смотри хотя бы исходники к книге -иди на
http://www.kohala.com/start/apue.html, скачивай apue.linux2.tar.Z
и смотри файл signals/system.c

HTH

Onanim
()
Ответ на: комментарий от Onanim

Запускает демоны и продолжает работать, надо просто запомнить, кого запустил.
сырцы посмотрю....спасибо...

RM
() автор топика
Ответ на: комментарий от RM

Наверное, все мои проблемы из-за блокировки (ее отсутствия) - waitpid. В общем, попробую.

RM
() автор топика
Ответ на: комментарий от RM

>Запускает демоны и продолжает работать

IMHO для этого лучше юзать fork()

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.