Книга: Программирование для Linux. Профессиональный подход

Листинг 3.2. (system.c) Использование функции system()

Листинг 3.2. (system.c) Использование функции system()

#include <stdlib.h>
int main() {
 int return_value;
 return_value = system("ls -l /");
 return return_value;
}

Функция system() возвращает код завершения указанной команды. Если интерпретатор не может быть запущен, возвращается значение 127, а в случае возникновения других ошибок — -1.

Поскольку функция system() запускает интерпретатор команд, она подвержена всем тем ограничениям безопасности, что и системный интерпретатор. Рассчитывать на наличие какой-то конкретной версии Bourne shell не приходится. В большинстве UNIX-систем программа /bin/sh представляет собой символическую ссылку на другой интерпретатор. В Linux — это bash (Bourne-Again SHell), причем в разных дистрибутивах присутствуют разные его версии. Вызов из функции system() программы с привилегиями пользователя root также может иметь неодинаковые последствия в разных системах. Таким образом, лучше создавать процессы с помощью функций fork() и exec().

Оглавление книги


Генерация: 1.121. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз