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 |
函数 sh 将 string 作为输入传递给 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 个字符。