将用C打开的文件描述符传递给tcl解释器以供使用

将用C打开的文件描述符传递给tcl解释器以供使用,tcl,Tcl,我有一个C程序,我在其中创建了一个tcl解释器。然后,我在C程序中打开一个文件,并希望将其传递到tcl解释器,以便tcl解释器可以对其执行I/O 我意识到我可以在tcl解释器中打开这个文件,但是我在其他地方得到了一个打开的文件描述符,所以不幸的是,这不是一个选项 有什么想法或技巧,或者我错过了tcl C API中的一些东西吗 man Tcl_MakeFileChannel 在那里阅读关于Tcl\u MakeFileChannel和Tcl\u RegisterChannel在创建Tcl解释器进程

我有一个C程序,我在其中创建了一个tcl解释器。然后,我在C程序中打开一个文件,并希望将其传递到tcl解释器,以便tcl解释器可以对其执行I/O

我意识到我可以在tcl解释器中打开这个文件,但是我在其他地方得到了一个打开的文件描述符,所以不幸的是,这不是一个选项

有什么想法或技巧,或者我错过了tcl C API中的一些东西吗

man Tcl_MakeFileChannel

在那里阅读关于
Tcl\u MakeFileChannel
Tcl\u RegisterChannel

在创建Tcl解释器进程之前不必打开文件,如果文件描述符有意义的话


如果您在之后打开,并在C程序中说您有文件描述符9,然后将这9传递给tcl解释器进程,那么这9将没有任何意义。

我看到了tcl级别的chan命令文档,但我没有看到任何适合这样做的内容。我简化了这个问题。实际上,我正在使用PerlTcl模块,需要构造一个Tcl命令来完成同样的事情。通过tcl的“chan”操作,是否有一种等效的方法来实现这一点?因为文件是用Perl打开的,但我可以访问文件描述符,需要将其连接到tcl子系统。但是如果没有,我会咬紧牙关,用C这样做。谢谢你的提示!您是否可以编写一个TCL C扩展来创建一个新的TCL命令,该命令使用TCL_MakeFileChannel和TCL_RegisterChannel API函数完成您需要的工作?我确实认为这些技巧是您需要的。Tcl_MakeFileChannel接受现有文件句柄并使其在Tcl中可用。仔细阅读文档。我还没有将Perl和Tcl结合起来,所以我不能给出任何具体的提示。如果他将Tcl作为一个单独的进程运行,这一评论将适用,但我认为他在C程序中嵌入了一个Tcl解释器,即在同一进程中。