3.2.1. Функция system()

3.2.1. Функция system()

Функция system() определена в стандартной библиотеке языка С и позволяет вызывать из программы системную команду, как если бы она была набрана в командной строке. По сути, эта функция запускает стандартный интерпретатор Bourne shell (/bin/sh) и передает ему команду на выполнение. Например, программа, представленная в листинге 3.2, вызывает команду ls -l /, отображающую содержимое корневого каталога.

Листинг 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().

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

System V API

Из книги автора

System V API Этот набор API является базовым для второй ветви[6] UNIX — System V (AT&T Unix System V). Как и оба предыдущих, этот набор API самодостаточен для реализации практически всех возможностей ОС, но использует для этого совершенно другие модели, например сетевую абстракцию TLI вместо


Ранняя AS/400 (она же System/38)

Из книги автора

Ранняя AS/400 (она же System/38) В конце 1985 небольшая группа разработчиков из Рочестера продемонстрировала, что на System/38 можно создать среду для программного обеспечения System/36. Стоимость оборудования снизилась настолько, что мы теперь могли создавать малые модели System/38. Это


System V UNIX

Из книги автора

System V UNIX Начиная с 1975 года фирма AT&T начала предоставлять лицензии на использование операционной системы как научно-образовательным учреждениям, так и коммерческим организациям. Поскольку основная часть системы поставлялась в исходных текстах, написанных на языке С,


system

Из книги автора

system Местонахождение: WINDOWSsystem32config Файл system (обратите внимание, что файл без расширения) содержит раздел реестра


ГЛАВА 3 System V IPC

Из книги автора

ГЛАВА 3 System V IPC 3.1. Введение Из имеющихся типов IPC следующие три могут быть отнесены к System V IPC, то есть к методам взаимодействия процессов, соответствующим стандарту System V:? очереди сообщений System V (глава 6);? семафоры System V (глава 11);? общая память System V (глава 14).Термин «System V IPC»


7.3.1.1. System V IPC

Из книги автора

7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)


System Сор

Из книги автора

System Сор Производитель: Mahaon soft (http://mahaonsoft.com).Статус: коммерческая.Страница для скачивания: http://mahaonsoft.com/downloads.html.Размер: 800 Кбайт.На первый взгляд, эта программа напоминает MagicTweak (см. выше) (рис. 5.35). Действительно, некоторое сходство в интерфейсе есть. В левой части окна


System Mechanic

Из книги автора

System Mechanic Производитель: iolo technologies (http://www.iolo.com).Статус: коммерческая.Страница для скачивания: http://www.iolo.com/download.cfm.Размер: 7,8 Мбайт.После запуска System Mechanic вы увидите окно, которое можно условно разделить на три части (рис. 5.36). В левой находятся пункты меню, каждое из которых


7.3.1.1. System V IPC

Из книги автора

7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)


System.DateTime и System.TimeSpan

Из книги автора

System.DateTime и System.TimeSpan В завершение нашего обзора базовых типов данных позволите обратить ваше внимание на то, что пространство имен System определяет несколько полезных типов данных, для которых в C# не предусмотрено ключевых слов. Это, в частности, типы DateTime и TimeSpan (задачу


Тип System.GC

Из книги автора

Тип System.GC Библиотеки базовых классов предлагают тип класса System.GC, который позволяет программно взаимодействовать со сборщиком мусора, используя множество статических членов указанного класса. Следует заметить, что непосредственно использовать этот тип в программном


Базовые классы System.MulticastDelegate и System.Delegate

Из книги автора

Базовые классы System.MulticastDelegate и System.Delegate Таким образом, при создании типов c помощью) ключевого слова delegate в C# вы неявно объявляете тип класса, являющегося производным от System.MulticastDelegate. Этот класс обеспечивает своим потомкам доступ к списку с адресами тех методов, которые


Тип System.Web.UI.Page

Из книги автора

Тип System.Web.UI.Page Первым интересующим нас родительским классом является сам класс Page. Ниже описаны его многочисленные свойства, обеспечивающие возможность взаимодействия с различными Web-примитивами, такими как переменные приложения и сеанса, запросы и ответы HTTP, темы и т.д.


Тип System.Web.UI.Control

Из книги автора

Тип System.Web.UI.Control Базовый класс System.Web.UI.Control определяет различные свойства, методы, и события, которые позволяют взаимодействовать с базовыми членами Web-элемента управления (обычно не относящимися к графическому интерфейсу). В табл. 23.9 предлагаются описания некоторых таких