Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.45 sh: sh コマンドの高速実行

関数は、次のように呼び出します。

INTEGER*4 sh

status = sh( string )

string

character*n

入力 

実行するコマンドを含んだ文字列 

戻り値 

INTEGER*4

出力 

実行されたシェルの終了状態。この値の説明については 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 は、あたかも文字列がコマンドとしてキー入力されたかのように、sh シェルに string を渡します。

現プロセスはコマンドが終了するまで待機します。

関数 sh(3f) と system(3f) は引数の文字列を実行用のシェルへ渡します。引数の文字列を Fortran 文字の値から C 文字列の値に変換し、それを C ルーチン system(3c) へ渡します。ルーチン sh(3f) と system(3f) との相違点は、system は C ルーチン system を呼び出す前に Fortran 入出力バッファーをフラッシュするのに対し、sh はこれを行いません。バッファーのフラッシュにはかなり時間がかかるため、Fortran 出力が呼び出し結果と無関係な場合は、ルーチン system より、ルーチン sh を選択してください。

sh() はマルチスレッド対応ではありません。マルチスレッドプログラム、または並列プログラムからは呼び出さないでください。

参照: execve(2)、wait(2)、system(3c)

注意: string の長さは 1,024 文字を超えることができません。