Spec-Zone.ru › GNU Fortran 9

9.100 EXECUTE_COMMAND_LINE — Выполнение командной строки

Описание:

EXECUTE_COMMAND_LINE выполняет командную строку, синхронно или асинхронно.

Аргумент COMMAND передаётся оболочке и выполняется (оболочка — sh в системах Unix и cmd.exe в Windows). Если WAIT присутствует и имеет значение false, выполнение команды асинхронное, если система это поддерживает; в противном случае команда выполняется синхронно с использованием вызова system библиотеки C.

Три последних аргумента позволяют пользователю получить информацию о статусе. После синхронного выполнения EXITSTAT содержит целочисленный код завершения команды, возвращённый system. CMDSTAT устанавливается в ноль, если командная строка была выполнена (независимо от её кода завершения). CMDMSG получает сообщение об ошибке, если произошла ошибка.

Обратите внимание, что функция system не обязательно потокобезопасна. Пользователь несёт ответственность за то, чтобы system не вызывалась одновременно.

Для асинхронного выполнения на поддерживаемых платформах используются функции POSIX posix_spawn или fork. Также устанавливается обработчик сигналов для сигнала SIGCHLD.

Стандарт:

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

Далее: EXIT, Предыдущее: EVENT_QUERY, Вверх: Встроенные процедуры [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gfortran/EXECUTE_005fCOMMAND_005fLINE.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API