【发布时间】:2014-02-11 15:01:27
【问题描述】:
我正在尝试在 TCL 脚本和 C 代码之间建立连接。
这是 TCL 脚本
set fs[open "./fifo_server" "w"]
puts $fs "level_3"
flush $fs
这里是 C 代码
if ((fs = fopen ("./fifo_server", "r"))== NULL)
perror ("error occured while opening FIFO_SERVER");
else {
fs1 = fileno(fs);
read(fs1, in_data, sizeof(in_data));
}
printf ("in_data = %s\n", in_data);
输出如下:
in_data = level_3
(some garbage stuff 5 spaces which contains Question marks, Squares,
Characters etc.)
我不明白,垃圾线可能是什么原因???
感谢您的准确和早期帮助。
感谢和问候, M.
【问题讨论】:
-
一次性使用
set fs [open "./fifo_server" "w"]。空间在 Tcl 中很重要。 -
您为什么使用
fileno和read而不是fread?或者,相反,fopen而不是open?尽量避免对一个文件描述符/句柄使用两个 API…… -
@Jerry 我认为这一定是一个转录错误,否则代码永远不会像报告的那样有效。