0
私は最後にintを返すコンパイル済みのCプログラムを実行するためにcatchとexecを使用しようとしていますが、 0と1の戻り値しか得られません.0はcプログラムが0を返したときに戻り、それ以外の場合は1を返します。 Cプログラムから戻り値(例えば5)を取得する方法はありますか?TCLでC exeファイルの戻り値を取得する方法(Windows)
私は最後にintを返すコンパイル済みのCプログラムを実行するためにcatchとexecを使用しようとしていますが、 0と1の戻り値しか得られません.0はcプログラムが0を返したときに戻り、それ以外の場合は1を返します。 Cプログラムから戻り値(例えば5)を取得する方法はありますか?TCLでC exeファイルの戻り値を取得する方法(Windows)
はい。 try/on error
ブロックを使用することも可能
set returnvalue 0
if { [catch { exec ./myprogram } result retopts] } {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue 1
if { $class eq "CHILDSTATUS" } {
set returnvalue $retcode
}
}
:リターン・オプションを取得するためにcatch
コマンドに三番目の引数を使用し
try {
exec ./myprogram
set returnvalue 0
} on error {result retopts} {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue 1
if { $class eq "CHILDSTATUS" } {
set returnvalue $retcode
}
}
編集:try/trap
例:
set returnvalue 1
try {
exec ./myprogram
set returnvalue 0
} trap {CHILDSTATUS} {result retopts} {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue $retcode
}
'try 'に' trap CHILDSTATUS'節を使います。コードを簡素化します。 –