Sun Studio 12:Fortran 库参考

1.4.50 system:执行系统命令

该函数的调用方式如下所示:

INTEGER*4 system

status = system( string )

string

character*n

输入 

包含执行命令的字符串 

返回值 

INTEGER*4

输出 

执行的 shell 的退出状态。有关该值的说明,请参见 wait(2)。

示例:system()


       character*8 string / ’ls s*’ /
       INTEGER*4 status, system
       status = system( string )
       if ( status .ne. 0 ) stop ’system: error’
       end

函数 systemstring 作为输入传递给 shell,就好像以命令方式键入该字符串。注意:string 不能超过 1,024 个字符。

如果 system 可以找到环境变量 SHELL,则 system 会将 SHELL 值用作命令解释程序 (shell);否则使用 sh(1)。

当前进程将等到命令终止。

一直以来,对 cc 开发时进行了不同的假设:

system 函数会刷新打开的所有文件:

函数 sh(3f) 和 system(3f) 将参数字符串传递给 shell 用于执行。它们将参数字符串从 Fortran 字符值转换为 C 字符串值,并将其传递给 C 例程 system(3c)。例程 sh(3f) 和 system(3f) 的不同之处在于,system 在调用 C 例程 system 前将刷新 Fortran I/O 缓冲区,而 sh 则不会刷新缓冲区。由于刷新缓冲区需要很长时间,因此,如果 Fortran 输出与调用结果无关,那么优先使用例程 system,而非例程 sh

另请参见:execve(2)、wait(2) 和 system(3)。

system() 函数不能安全地用于多线程程序。请勿从多线程或并行程序中调用该函数。