LINUX.ORG.RU

execl


0

0

Как из проги на С++ вызвать внешнюю программу??? execl не хочет передавть параметры :((

anonymous

Можно так

pid_t child_pid;
int status;

child_pid = fork();
if (child_pid == 0) {
execlp("ls", "ls", "-la", 0);
printf("Error!!!");
} else
if (child_pid > 0)
child_pid = waitpid(child_pid, &status, 0);
if (child_pid >= 0)
printf("Child is terminated with code %d\n", WEXITSTATUS(status));

Здесь я использую execlp, который принимает имя программы для выполнения, ищет ее в PATH, вторым агрументом принимает argv[0], то есть имя выполняемой программы, а потом параметры программы.

execlp выглядит приблизительно так
int execlp( const char *file, const char *arg, ...);
Можно заметить, что последним параметром передается ноль. Он будет корректно заканчивать формирующую строку. Хотя если последний параметр уже с нулем, то ненужно.

Если ты заметил, то после вызова execlp я громко матюкаюсь, мол ошибка. Это от того, что execlp не возвращает управления в случае нормального выполнения.

А в нутрях мне думается она использует vprintf для формирования полной строки из аргументов или что-то похожее.

Banshee
()

Спасибо! заработало

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