Spec-Zone.ru › GNU Fortran 7

9.100 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

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

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

Spec-Zone.ru

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