1

Tcl プログラム内で、< を使用して入力を受け取るプログラムを実行しようとしています。

puts [exec "./program < inputfile"]

ただし、これによりエラーが発生します

couldn't execute "./program < inputfile": no such file or directory

Tclでこれを行う方法はありますか?

4

2 に答える 2

4

Tcl はリダイレクト自体を処理できるため、次のように記述します。

puts [exec ./program <inputfile]

それ以外の場合は、すべてを単一の (やや奇妙な) ファイル名として解釈しようとします。合法(WindowsではなくUnix)ですが、あなたが望んでいたものではありません。

または、システム シェルを介してすべてを起動することもできます。

puts [exec /bin/sh -c "./program < inputfile"]

それは機能しますが、多くの注意事項があります。特に、シェルの引用は重要な問題であり、Windows には移植できません (コマンドライン プロセッサを介して実行するための呪文は少し異なります)。余分なプロセスも使用されますが、システム リソースの制限を実際に拡張しない限り、実際には大きな問題にはなりません。

プラス面は、そこで完全なシェル構文を使用できることです。これにより、他の方法ではまったく厄介なことがいくつか可能になります。また、より広く知られているため、中程度の専門知識を持つユーザーに提示したいものです. (新しいユーザーは既製のものに固執する必要があります。実際の専門家はいくつかの Tcl スクリプトを作成できます。)

于 2013-06-09T17:53:56.410 に答える
2

私は答えを見つけました、コマンドは次のように書かれなければなりません

puts [exec "./program" < inputfile]
于 2013-06-09T14:41:38.560 に答える