- system
- Contents
- [edit] Parameters
- [edit] Return value
- [edit] Notes
- [edit] Example
- [edit] References
- system , _wsystem
- Синтаксис
- Параметры
- Возвращаемое значение
- Комментарии
- Сопоставления подпрограмм универсального текста
- Требования
- Пример
- Входные данные: crt_system.txt
- Вывод
- Функция system
- Параметры:
- Возвращаемое значение
- Пример: исходный код программы
- Пример работы программы
- system
- Parameters
- Return Value
- Example
- Data races
- Exceptions (C++)
- system
- Parameters
- Return Value
- Example
- Data races
- Exceptions (C++)
system
Calls the host environment’s command processor with the parameter command . Returns an implementation-defined value (usually the value that the invoked program returns).
If command is a null pointer, checks if the host environment has a command processor and returns a nonzero value if and only if the command processor exists.
Contents
[edit] Parameters
command | — | character string identifying the command to be run in the command processor. If a null pointer is given, command processor is checked for existence |
[edit] Return value
Implementation-defined value. If command is a null pointer, returns a nonzero value if and only if the command processor exists.
[edit] Notes
On POSIX systems, the return value can be decomposed using WEXITSTATUS and WSTOPSIG .
The related POSIX function popen makes the output generated by command available to the caller.
[edit] Example
In this example there is a system call of the unix command date +%A and a system call to (possibly installed) gcc compiler with command-line argument (—version):
#include int main(void) { system("date +%A"); system("gcc --version"); }
[edit] References
system , _wsystem
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
int system( const char *command ); int _wsystem( const wchar_t *command );
Параметры
command
Команда для выполнения.
Возвращаемое значение
Если параметр command имеет значение NULL и найден интерпретатор команд, возвращает ненулевое значение. Если интерпретатор команд не найден, возвращает значение 0 и задает значение errno ENOENT . Если command значение не NULL равно , system возвращает значение, возвращаемое интерпретатором команд. Она возвращает значение 0, только если интерпретатор команд возвращает значение 0. Возвращаемое значение -1 указывает на ошибку и errno имеет одно из следующих значений:
Значение | Описание |
---|---|
E2BIG | Список аргументов (который зависит от системы) слишком велик. |
ENOENT | Не удается найти интерпретатор команд. |
ENOEXEC | Не удается выполнить файл интерпретатора команд, так как формат недопустим. |
ENOMEM | Недостаточно памяти для выполнения команды; или доступная память повреждена; или существует недопустимый блок, который указывает, что вызывающий процесс был выделен неправильно. |
Дополнительные сведения о кодах возврата см. в разделе errno , _doserrno , _sys_errlist и _sys_nerr .
Комментарии
Функция system передает параметр command интерпретатору команд, который выполняет эту строку как команду операционной системы. Для поиска файла интерпретатора команд CMD.exe функция system использует переменные среды COMSPEC и PATH . Если параметр command имеет значение NULL , функция только проверяет, существует ли интерпретатор команд.
Необходимо явно выполнить очистку с помощью fflush или _flushall или закрыть любой поток перед вызовом system .
_wsystem — это версия system с расширенными символами; аргумент command для _wsystem — строка расширенных символов. В остальном эти функции ведут себя одинаково.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Сопоставления подпрограмм универсального текста
TCHAR.H Обычной | _UNICODE и _MBCS не определены | _MBCS Определенные | _UNICODE Определенные |
---|---|---|---|
_tsystem | system | system | _wsystem |
Требования
Подпрограмма | Обязательный заголовок |
---|---|
system | или |
_wsystem | , или |
Дополнительные сведения о совместимости см. в разделе Compatibility.
Пример
В этом примере функция system используется для печати (TYPE) текстового файла.
// crt_system.c #include int main( void )
Входные данные: crt_system.txt
Вывод
Функция system
Функция выполняет заданную, через параметр syscom , системную команду. На самом деле, функция не сама выполняет команду, она вызывает командный процессор для выполнения команд. После выполнения команды, командный процессор возвращает управление программе, возвращая целочисленное значение, интерпретация которого зависит от системы.
Эта функция может принимать в качестве аргумента нулевой указатель — NULL , для проверки существования командного процессора.
Параметры:
Возвращаемое значение
Возвращаемое значение зависит от текущих характеристик окружающей среды. Во многих системах, 0 используется для указания на то, что команда была успешно выполнена. Значения отличные от нуля указывают на какую-то ошибку.
Если аргумент является NULL , функция возвращает ненулевое значение, если командный процессор доступен, и ноль в противном случае.
Пример: исходный код программы
//пример использования функции system #include #include int main() < // Проверка, доступен ли командный процессор if ( system(NULL) ) std::cout << "Командный процессор доступен\n"; else exit (1); // выход из программы std::cout << "Выполнение команды dir. \n\n"; int i = system ("dir"); // показать файлы текущей директории std::cout
Пример работы программы
Тестировал программу в Линуксе, очень похожий вывод покажет программа и в ОС Windows. программа показала, что командный процессор готов к выполнению команды системной dir , команда выполнилась и мы на экране увидели список файлов в текущей директории, файлы разделены пробелом.
Командный процессор доступен
Выполнение команды dir…
er example.txt~ Makefile myfile.txt oldname\ (другая\ копия).txt
example.txt main.o myfile~ newname.txt
system
If command is a null pointer, the function only checks whether a command processor is available through this function, without invoking any command.
The effects of invoking a command depend on the system and library implementation, and may cause a program to behave in a non-standard manner or to terminate.
Parameters
command C-string containing the system command to be executed.
Or, alternatively, a null pointer, to check for a command processor.
Return Value
If command is a null pointer, the function returns a non-zero value in case a command processor is available and a zero value if it is not.
If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported.
Example
/* system example : DIR */ /* printf */ /* system, NULL, EXIT_FAILURE */ int main () < int i; printf ("Checking if processor is available. "); if (system(NULL)) puts ("Ok"); else exit (EXIT_FAILURE); printf ("Executing command DIR. \n"); i=system ("dir"); printf ("The value returned was: %d.\n",i); return 0; >
Data races
The function accesses the array pointed by command .
Concurrently calling this function with a null pointer as argument is safe. Otherwise, it depends on the system and library implementation.
Exceptions (C++)
No-throw guarantee: this function does not throw exceptions.
If command is not a null pointer, it causes undefined behavior.
system
If command is a null pointer, the function only checks whether a command processor is available through this function, without invoking any command.
The effects of invoking a command depend on the system and library implementation, and may cause a program to behave in a non-standard manner or to terminate.
Parameters
command C-string containing the system command to be executed.
Or, alternatively, a null pointer, to check for a command processor.
Return Value
If command is a null pointer, the function returns a non-zero value in case a command processor is available and a zero value if it is not.
If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported.
Example
/* system example : DIR */ /* printf */ /* system, NULL, EXIT_FAILURE */ int main () < int i; printf ("Checking if processor is available. "); if (system(NULL)) puts ("Ok"); else exit (EXIT_FAILURE); printf ("Executing command DIR. \n"); i=system ("dir"); printf ("The value returned was: %d.\n",i); return 0; >
Data races
The function accesses the array pointed by command .
Concurrently calling this function with a null pointer as argument is safe. Otherwise, it depends on the system and library implementation.
Exceptions (C++)
No-throw guarantee: this function does not throw exceptions.
If command is not a null pointer, it causes undefined behavior.