我试图从纯粹的posix中找出如何正确使用FILE对象。我觉得我不知何故错过了这一点。
请允许有人从头到尾给我一个使用fprintf()和fwrite()编写正确方法的示例,确保所有数据都正确写入并刷新并相应地处理任何非致命错误。例如,如果在fwrite期间在底层文件描述符上获得了EINTR,那么ferror()会发生什么?如果填充FILE对象的缓冲区会发生什么?
context:我有一个程序关键管道,如果它关闭然后我必须重新启动整个过程,所以我想知道如何区分“请重试”,“libc错误与文件描述符无关”并且“你的文件描述符正在为峡湾而苦恼”。我试图避免重新分解现有代码以尽可能使用纯posix,但我觉得我到目前为止还没有找到stdio FILE边缘情况的全面描述。尝试使用fwrite来获取gcc(4.1.1)源码,这条路径在fwrite_unlocked时已经死了。