QQ截图20171226192428.png (9.19 KB, 下载次数: 366)
kyra 发表于 2017-12-27 09:35
call system(cmd)
li913 发表于 2017-12-27 15:26
call EXECUTE_COMMAND_LINE ()
标准用法。
9.100 EXECUTE_COMMAND_LINE — Execute a shell command
Description:
EXECUTE_COMMAND_LINE runs a shell command, synchronously or asynchronously.
The COMMAND argument is passed to the shell and executed, using the C library’s system call. (The shell is sh on Unix systems, and cmd.exe on Windows.) If WAIT is present and has the value false, the execution of the command is asynchronous if the system supports it; otherwise, the command is executed synchronously.
The three last arguments allow the user to get status information. After synchronous execution, EXITSTAT contains the integer exit code of the command, as returned by system. CMDSTAT is set to zero if the command line was executed (whatever its exit status was). CMDMSG is assigned an error message if an error has occurred.
Note that the system function need not be thread-safe. It is the responsibility of the user to ensure that system is not called concurrently.
Standard:
Fortran 2008 and later
Class:
Subroutine
Syntax:
CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])
Arguments:
COMMAND Shall be a default CHARACTER scalar.
WAIT (Optional) Shall be a default LOGICAL scalar.
EXITSTAT (Optional) Shall be an INTEGER of the default kind.
CMDSTAT (Optional) Shall be an INTEGER of the default kind.
CMDMSG (Optional) Shall be an CHARACTER scalar of the default kind.
Example:
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
Note:
Because this intrinsic is implemented in terms of the system function call, its behavior with respect to signaling is processor dependent. In particular, on POSIX-compliant systems, the SIGINT and SIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As such, if the parent process is terminated, the child process might not be terminated alongside.
See also:
SYSTEM
辞觉 发表于 2017-12-28 19:48
谢谢大神的回复,问题已经解决了,还想请教一下读文件的时候判断文件到末尾用的eof函数,在simply fortra ...
辞觉 发表于 2017-12-28 19:48
谢谢大神的回复,问题已经解决了,还想请教一下读文件的时候判断文件到末尾用的eof函数,在simply fortra ...
9.154 IS_IOSTAT_END — Test for end-of-file value
Description:
IS_IOSTAT_END tests whether an variable has the value of the I/O status “end of file”. The function is equivalent to comparing the variable with the IOSTAT_END parameter of the intrinsic module ISO_FORTRAN_ENV.
Standard:
Fortran 2003 and later
Class:
Elemental function
Syntax:
RESULT = IS_IOSTAT_END(I)
Arguments:
I Shall be of the type INTEGER.
Return value:
Returns a LOGICAL of the default kind, which .TRUE. if I has the value which indicates an end of file condition for IOSTAT= specifiers, and is .FALSE. otherwise.
Example:
PROGRAM iostat
IMPLICIT NONE
INTEGER :: stat, i
OPEN(88, FILE='test.dat')
READ(88, *, IOSTAT=stat) i
IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'
END PROGRAM
pasuka 发表于 2017-12-29 10:17
传送门
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gfortran/IS_005fIOSTAT_005fEND.html#IS_005fIOSTAT_ ...
kyra 发表于 2017-12-29 08:13
eof 函数不是标准语法,类似的 systemqq 也不是标准语法。
但凡是标准的,所有编译器都支持,所以你必须 ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |