Fortranプログラムでsystem call("action")
ルーチンを使用して外部コマンドを実行しています。コマンドが呼び出されたらシェルを終了したいと思います。 Iが結合 サンプルコードは、次のとおりFortranからシェルを閉じる
program ai
implicit none
integer :: i
i=1
if (i.eq.1) then
call system("exit")
end if
end program ai
IはCALL EXECUTE_COMMAND_LINE
でも試みたが、結果は同じであり、私が働いていたシェルを閉じることができません。シェルを閉じるには、手でコマンドexit
をタイプする必要があります。なぜこのコマンドがうまくいかないのでしょうか?たとえば、mkdir
の場合、gnuplot
..が機能しますか?
ありがとうございます!
"なぜ" - システム( "exit")は**完全に新しいシェル**を起動し、そのシェルで 'exit'を実行するためです。これまで実行していたシェルの状態は変更されません。 –
私はそれがうまくいくかどうかはわかりません。このプログラムを実行すると、このプログラムはシェルの「子」になります。また、 'system'呼び出しを行うとプログラムの'子 'になります。 – chw21
これは、 'system(" cd/")を使用しても効果がない理由です:関数が返ってくるまでに、あなたが変更した状態のシェルはすでに実行を終えて終了します。 –