我目前正在编写一个 C 程序,该程序正在将一些数据写入文件描述符,其中文件描述符表示已打开与该程序的连接的其他进程。
我的程序总是在某个时刻崩溃,我已经缩小了它所采取的最后几个动作,看起来像:
write(clientfd, "start", 5);
printf("something goes here");
write(clientfd, "end", 3);
printf("something else goes here");
写入到相同的文件描述符,并写入基本的字符串文字 - 但是,在该程序的执行过程中,只有第一个write
并printf
关闭 - 程序似乎在第二个崩溃write
,因为第二个printf
从未出现。
这对我来说似乎没有多大意义。我还打印了第一个的输出write
(它实际写入的字节数),它似乎是正确的(在本例中为 5),这意味着第一个write
调用甚至没有失败,但第二个调用导致程序由于某种神秘的原因而崩溃。需要注意的是,对于这个文件描述符连接,在连接的客户端,客户端已经关闭了文件描述符的末端。我不确定这是否相关,但我觉得不是,因为第一个write
成功了。
任何帮助,将不胜感激!