dmi*_*tru 4 c unix sockets network-programming
人们经常说在使用套接字时不应该使用C标准I/O函数(比如fprintf(),fscanf()).
我不明白为什么.我想如果原因只是它们的缓冲性质,那么每次输出时都可以刷新输出缓冲区,对吧?
为什么每个人都使用UNIX I/O函数?在使用标准C功能是否合适且正确的情况下是否存在?
你当然可以使用stdio套接字.你甚至可以编写一个只使用它的程序,stdin并stdout从中运行它inetd(它提供套接字STDIN_FILENO和STDOUT_FILENO),即使它根本不包含任何套接字代码也可以工作.
你不能做的是混合缓冲I/O select或poll因为没有fselect或没有fpoll工作FILE *,你甚至不能自己实现一个,因为没有标准的查询方式FILE *来查明它的输入缓冲区是否为空.
只要你需要处理多个连接,stdio就不够好了.