2017-01-17 3 views
0

私は最後にintを返すコンパイル済みのCプログラムを実行するためにcatchとexecを使用しようとしていますが、 0と1の戻り値しか得られません.0はcプログラムが0を返したときに戻り、それ以外の場合は1を返します。 Cプログラムから戻り値(例えば5)を取得する方法はありますか?TCLでC exeファイルの戻り値を取得する方法(Windows)

答えて

1

はい。 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 
} 

参考文献:catcherrorCodetry

+0

'try 'に' trap CHILDSTATUS'節を使います。コードを簡素化します。 –

関連する問題