私はtclインタプリタを作成するCプログラムを持っています。次に、Cプログラムでファイルを開き、それをtclインタプリタに渡して、tclインタプリタがI/Oを実行できるようにします。Cで開いたファイルディスクリプタをtclインタプリタに渡して使用する
そして私は、私はちょうどTclインタプリタでファイルを開くことができます実現が、それは残念ながら、オプションではありませんので、私は、いくつかの他のどこかのオープンファイル記述子を取得します。
tcl C APIで何か迷っていましたか?
私はtclインタプリタを作成するCプログラムを持っています。次に、Cプログラムでファイルを開き、それをtclインタプリタに渡して、tclインタプリタがI/Oを実行できるようにします。Cで開いたファイルディスクリプタをtclインタプリタに渡して使用する
そして私は、私はちょうどTclインタプリタでファイルを開くことができます実現が、それは残念ながら、オプションではありませんので、私は、いくつかの他のどこかのオープンファイル記述子を取得します。
tcl C APIで何か迷っていましたか?
man Tcl_MakeFileChannel
ファイルディスクリプタは意味が持っているために起こっている場合が読む、約Tcl_MakeFileChannel
とTcl_RegisterChannel
、前にファイルを開く必要がありますが、TCLインタプリタプロセスを作成していませんか?
Cプログラムでファイル記述子9があり、この9をtclインタプリタプロセスに渡すと、9は何も意味しません。
このコメントは適用されます。同じプロセスで –
私はtclレベルでchanコマンドのdocを見ましたが、これを行うのに適したものは何も表示されませんでした。私は問題を単純化した。実際には、Perl Tclモジュールを使用しており、同じことをするtclコマンドを作成する必要があります。 tcl "chan"操作でこれを実行する同等の方法はありますか?ファイルはPerlで開かれていますが、ファイル記述子にアクセスでき、これをtclサブシステムに接続する必要があります。しかし、そうでない場合、私は弾丸をかみ合い、このようにCで行います。ヒントをありがとう! – xcramps
TCL C拡張を記述して、Tcl_MakeFileChannel API関数とTcl_RegisterChannel API関数を使用して必要な処理を行う新しいTCLコマンドを作成できますか? – Jackson
私はこれらのヒントがあなたが行く必要がある方法だと思います。 Tcl_MakeFileChannelは既存のファイルハンドルを取り、それをTclで利用できるようにします。ドキュメントをよくお読みください。私はPerlやTclのを組み合わせて働いていないので、私はそのための具体的なヒントを与えることはできません。彼は別のプロセスとしてのTclを実行していたが、私は彼がCプログラムに組み込まれたTclインタプリタを持っていると思う、すなわち場合 –