在套接字的上下文中,r +和a +有什么区别?

时间:2019-05-20 05:12:22

标签: c unix io unix-socket fdopen

我正在使用FILE将来自UNIX Domain套接字的连接包装在fdopen(accept_file_descriptor)指针中,然后使用fgets()进行读取,并使用fwrite()进行写入。当我将模式设置为r+时,如果我没有从输入中读取所有字符,则即使在fclose()之后也不会发送响应。但是,当文件模式设置为a+时,响应总是写到客户端。为什么会这样?使用套接字时,IO功能是否在同一位置读写?如果我要追加,什么也没写到套接字,那为什么会很重要?

CLIfd = accept(SRVfd, NULL, NULL);
// Before
 conn = fdopen(CLIfd, "r+"); 
// After
conn = fdopen(CLIfd, "a+"); 

0 个答案:

没有答案