我正在使用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+");