Sun Studio 12:Fortran 库参考

1.4.45 sh:快速执行 sh 命令

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

INTEGER*4 sh

status = sh( string )

string

character*n

输入 

包含执行命令的字符串 

返回值 

INTEGER*4

输出 

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

示例:sh()


       character*18 string / ’ls > MyOwnFile.names’ /
       INTEGER*4 status, sh
       status = sh( string )
       if ( status .ne. 0 ) stop ’sh: error’
       ...
       end

函数 shstring 作为输入传递给 sh shell,就好像以命令方式键入该字符串。

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

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

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

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

注意:string 不能超过 1,024 个字符。