Tcl プログラム内で、< を使用して入力を受け取るプログラムを実行しようとしています。
puts [exec "./program < inputfile"]
ただし、これによりエラーが発生します
couldn't execute "./program < inputfile": no such file or directory
Tclでこれを行う方法はありますか?
Tcl プログラム内で、< を使用して入力を受け取るプログラムを実行しようとしています。
puts [exec "./program < inputfile"]
ただし、これによりエラーが発生します
couldn't execute "./program < inputfile": no such file or directory
Tclでこれを行う方法はありますか?
Tcl はリダイレクト自体を処理できるため、次のように記述します。
puts [exec ./program <inputfile]
それ以外の場合は、すべてを単一の (やや奇妙な) ファイル名として解釈しようとします。合法(WindowsではなくUnix)ですが、あなたが望んでいたものではありません。
または、システム シェルを介してすべてを起動することもできます。
puts [exec /bin/sh -c "./program < inputfile"]
それは機能しますが、多くの注意事項があります。特に、シェルの引用は重要な問題であり、Windows には移植できません (コマンドライン プロセッサを介して実行するための呪文は少し異なります)。余分なプロセスも使用されますが、システム リソースの制限を実際に拡張しない限り、実際には大きな問題にはなりません。
プラス面は、そこで完全なシェル構文を使用できることです。これにより、他の方法ではまったく厄介なことがいくつか可能になります。また、より広く知られているため、中程度の専門知識を持つユーザーに提示したいものです. (新しいユーザーは既製のものに固執する必要があります。実際の専門家はいくつかの Tcl スクリプトを作成できます。)
私は答えを見つけました、コマンドは次のように書かれなければなりません
puts [exec "./program" < inputfile]