В чем разница между system () в C и Perl? - PullRequest
4 голосов
/ 04 декабря 2009

Функция system() запускает новый процесс из C и сценарий Perl.

Чем именно отличаются процессы, называемые system() в C, и от сценариев Perl в плане представления кодов ошибок?

1 Ответ

8 голосов
/ 04 декабря 2009

Небольшое исследование поднимает:

Возвращаемым значением является состояние выхода программа, возвращаемая ожиданием вызов. Чтобы получить фактическое значение выхода, сдвиг вправо на восемь (см. ниже). Увидеть также "Exec". Это не то, что вы хотите использовать для захвата вывода из команда, для этого вы должны использовать просто кавычки или qx //, как описано в "STRING" в perlop. Возвращаемое значение -1 означает, что не удалось запустить программа или ошибка ожидания (2) системный вызов (проверьте $! для причина).

И документы wait говорят:

ведет себя как системный вызов wait (2) в вашей системе: ждет ребенка процесс, чтобы прекратить и возвращает PID умершего процесса, или -1, если нет дочерних процессов. статус возвращается в $? а также $ {^ CHILD_ERROR_NATIVE}. Обратите внимание, что возвращаемое значение -1 может означать, что дочерние процессы в настоящее время автоматически пожинается, как описано в perlipc.


Источники: взято из perldoc . Вот учебник по системе в Perl.

...