9.93 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 будет заблокирован. В связи с этим, если родительский процесс будет завершен, дочерний процесс может не завершиться вместе с ним. - См. также:
Далее: EXIT, Предыдущее: EVENT_QUERY, Вверх: Встроенные процедуры [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.4.0/gfortran/EXECUTE_005fCOMMAND_005fLINE.html