8.78 EXECUTE_COMMAND_LINE — Выполнение командной строки
- Описание:
-
EXECUTE_COMMAND_LINEвыполняет команду оболочки синхронно или асинхронно.Аргумент
COMMANDпередаётся оболочке и выполняется с использованием вызоваsystemбиблиотеки C. (Оболочка являетсяshв системах Unix иcmd.exeв Windows.) ЕслиWAITприсутствует и имеет значение false, выполнение команды является асинхронным, если система его поддерживает; в противном случае команда выполняется синхронно.Три последних аргумента позволяют пользователю получить информацию о статусе. После синхронного выполнения
EXITSTATсодержит целое числоный код завершения команды, возвращаемыйsystem.CMDSTATустанавливается в ноль, если командная строка была выполнена (независимо от её кода возврата).CMDMSGполучает сообщение об ошибке, если произошла ошибка.Обратите внимание, что функция
systemне обязательно потокобезопасна. Пользователь отвечает за обеспечение того, чтобы функцияsystemне вызывалась параллельно. - Стандарт:
- Fortran 2008 и более поздние версии
- Класс:
- Подпрограмма
- Синтаксис:
-
CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ]) - Аргументы:
-
COMMAND Должен быть скалярным значением типа CHARACTERпо умолчанию.WAIT (Необязательно) Должен быть скалярным значением типа LOGICALпо умолчанию.EXITSTAT (Необязательно) Должен быть целого типа INTEGERстандартного вида.CMDSTAT (Необязательно) Должен быть целого типа INTEGERстандартного вида.CMDMSG (Необязательно) Должен быть скалярным значением типа CHARACTERстандартного вида. - Пример:
-
program test_exec integer :: i call execute_command_line ("external_prog.exe", exitstat=i) print *, "Exit status of external_prog.exe was ", i call execute_command_line ("reindex_files.exe", wait=.false.) print *, "Now reindexing files in the background" end program test_exec - Примечание:
- Поскольку этот встроенный модуль реализован в терминах вызова функции
system, его поведение относительно сигналов зависит от процессора. В частности, в системах, совместимых с POSIX, сигналы SIGINT и SIGQUIT будут игнорироваться, а SIGCHLD будет заблокирован. Таким образом, если родительский процесс завершается, дочерний процесс может не завершиться вместе с ним. - См. также:
- SYSTEM
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gfortran/EXECUTE_005fCOMMAND_005fLINE.html