Какова цель функции system (), если у меня уже есть доступ к системе? - PullRequest
0 голосов
/ 23 февраля 2012

Если бы я выполнил команду ssh и вошел в систему на сервере, будет ли какая-либо причина иметь систему вызова кода (), поскольку я могу сам ее запустить?

Редактировать: код, который я написал, был бы написан наC

1 Ответ

1 голос
/ 23 февраля 2012
Системный вызов

выполнит нужную вам программу (с параметрами). Системный вызов () вызывает оболочку. Так что изнутри программы на C, если вы хотите удалить файл, вы можете вызвать систему с "rm filename" в качестве аргумента (это всего лишь случай использования - определенно не то, как вы хотите удалить файл из программы на C) Вы должны использовать system () только тогда, когда знаете, что делаете. Если пользовательский ввод является какой-либо частью аргумента системного вызова, вам следует убедиться, что вы дезинфицируете свой ввод, чтобы не открывать себя для инъекций команд.

Пример внедрения команды с помощью системного вызова: здесь

Альтернативы системе являются popen и, очевидно, fork + exec.

...