2015-05-21 3 views
-1

Какая у пользователя команда execl?Использование функции execl в языке программирования C

excel("/bin/sh", "sh", "-c", cmdstring, (char *)0); 
_exit(127); 

Может кто-нибудь объяснить каждое утверждение используется в execl команде? И почему только _exit(127), а не exit(0).

Что такое 127 номер с указанием?

+1

какой язык/ОС/окружающая среда является встроенной функцией 'excel'? (Самый важный вопрос). '_exit (127)' будет стандартным кодом возврата * nix, чтобы указать «команда не найдена». Удачи. – shellter

+3

Не существует такой вещи, как «язык программирования UNIX». Вы имеете в виду C? (И вы, возможно, неправильно читаете 'execl' или' execle'?) – jwodder

ответ

3

execl является одной из нескольких функций (exec*), которые позволяют заменить текущий код вашего процесса тем, который предоставлен файлом (исполняемым), указанным в качестве первого аргумента. Все пространство вашего процесса заменено новым ... Другие аргументы служат в качестве аргументов для команды. Процесс - это своего рода системная структура, контролирующая выполнение некоторого кода. exec позволяет мутировать этот код.

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

В случае, если exec не работает, выполнение продолжается, и в вашем случае производится вызов _exit. _exit - это системная функция, предназначенная для прекращения выполнения текущего процесса, что приводит к его смерти. exit - это C-функция, которая делает то же самое на уровне C, грубо закрывая C-потоки и вызывая _exit.

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

0

Вы можете ввести man execl в терминале для получения дополнительной информации о команде execl.

Смежные вопросы