EXECUTE_COMMAND_LINE(COMMAND, WAIT, EXITSTAT, CMDSTAT, CMDMSG) (Fortran 2008)
用途
将命令传递到操作系统以执行。
类
子例程
参数类型和属性
- COMMAND
INTENT(IN)CHARACTER标量。 它指定要执行的命令行。- WAIT (可选)
INTENT(IN)LOGICAL标量。 它确定 COMMAND 是同步执行还是异步执行。- 如果 WAIT 设置为 .TRUE。 COMMAND 以同步方式执行。
- 如果 WAIT 设置为 .FALSE. , 如果支持 COMMAND ,那么将以异步方式执行,否则以同步方式执行。
- 如果 WAIT 不存在,那么 IBM® Open XL Fortran 会将其视为具有值 .TRUE 的存在。 然后以同步方式执行 COMMAND 。
注: 在当前发行版中, IBM Open XL Fortran 仅支持同步执行。- EXITSTAT (可选)
INTENT(OUT)INTEGER标量。 如果 IBM Open XL Fortran 以同步方式执行 COMMAND ,那么当此参数存在时,将向 EXITSTAT 分配已执行命令返回的系统返回码的值。 否则, EXITSTAT 将保持不变。- CMDSTAT (可选)
INTENT(OUT)INTEGER标量。 如果存在 CMDSTAT ,那么会为其分配一个值,指示命令执行的状态,如下所示:- 如果不支持命令行执行,则 CMDSTAT 的值被设置为 -1。
- 如果在执行 COMMAND期间未发生错误,并且 WAIT 的值为 .FALSE. , 但异步执行不受支持,因此 CMDSTAT 被分配了 -2 的值。
- 如果发生错误,那么将为 CMDSTAT 分配值 1。
- 在所有其他情况下,将为 CMDSTAT 分配 0 的值。
注: 如果发生将非零值指定给 CMDSTAT的条件,但 CMDSTAT 自变量不存在,那么将启动错误终止。- CMDMSG (可选)
INTENT(OUT)CHARACTER标量。 如果在执行 COMMAND期间发生错误,那么当存在此参数时,将向 CMDMSG 分配说明消息的值。 否则, CMDMSG 将保持不变。
示例
CALL EXECUTE_COMMAND_LINE('rm -rf script')
OPEN(1, FILE = 'script')
CALL EXECUTE_COMMAND_LINE('date | awk \'{printf \" %s \", $1}\' >> script.out')
! Execute the 'cmd' command synchronously
CHARACTER(LEN = 10) :: cmd = "du -s -m"
CALL EXECUTE_COMMAND_LINE(cmd, .TRUE.)
! Assign 'exit' the value of the system return code
INTEGER :: exit = 0
CALL EXECUTE_COMMAND_LINE('/bin/mv mod1.mod mod2.mod', .TRUE., EXIT)
! Assign 'exit' the value of the system return code
! Assign 'cmdstat' the value of the status of the command execution
INTEGER :: exit, cmdstat = 0
CALL EXECUTE_COMMAND_LINE('echo running on = \'hostname\'', .TRUE., exit, cmdstat)
! If an error occurs, 'message' is assigned the value of
! an explanatory message.
IMPLICIT NONE
CHARACTER(200) :: message = ""
INTEGER :: exit_s = 0, cmd_s = 0
CALL EXECUTE_COMMAND_LINE("mv f.1 f.2", EXITSTAT = exit_s,
CMDSTAT = cmd_s, CMDMSG = message)
IF (cmd_s .NE. 0) THEN
IF (cmd_s .EQ. -1) THEN
PRINT *, "command execution not supported on this system"
STOP 1
END IF
PRINT *, message
STOP 2
END IF
IF (exit_s .NE. 0) THEN
STOP 3
END IF
END
相关信息
SYSTEM(CMD, RESULT)(IBM 扩展)有关底层实现的详细信息,请参阅 AIX Technical Reference: Base Operating System and Extensions Volume 2 中的 system 子例程。