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 文字を超えることができません。