fcntl和套接字之间的链接
我读过有关套接字、连接、fcntl、缓冲区等的内容。 但是我不知道套接字和fcntl函数之间的链接是什么。 我只知道套接字用于建立连接,fcntl用于控制打开的文件。我不知道fcntl是如何用来控制文件的,它与fopen、fwrite、fclose函数有何不同。 任何人都可以帮我,因为我被卡住了。fcntl系统调用用于对打开的文件描述符执行操作-获取或设置文件描述符标志,例如更改O_追加或O_非块状态标志 int fcntlint fd,int cmd,…/*arg*/ 在这种情况下,打开的套接字将由文件描述符sockFd引用: sockFd=插座PF_本地,插座DGRAM,0 例如,要使套接字非阻塞,请使用fcntl更改套接字文件描述符的状态。*注:简化代码:* int flags=fcntlsockFd,F_GETFL,0;/*获取套接字的标志*/ 标志|=O|U非块;/*将O_非块状态添加到套接字描述符的标志*/fcntl和套接字之间的链接,c,C,我读过有关套接字、连接、fcntl、缓冲区等的内容。 但是我不知道套接字和fcntl函数之间的链接是什么。 我只知道套接字用于建立连接,fcntl用于控制打开的文件。我不知道fcntl是如何用来控制文件的,它与fopen、fwrite、fclose函数有何不同。 任何人都可以帮我,因为我被卡住了。fcntl系统调用用于对打开的文件描述符执行操作-获取或设置文件描述符标志,例如更改O_追加或O_非块状态标志 int fcntlint fd,int cmd,…/*arg*/ 在这种情况下,打开的套接
状态=fcntlsockFd,F_SETFL,flags;/*将新标志应用于套接字*/fcntl用于控制文件描述符,而不是特定的文件。 open可用于获取与文件关联的文件描述符。同样,例如套接字和管道调用返回一个文件描述符。这些文件描述符稍后可能与fcntl一起使用。 因此,连接是:从套接字调用获得的文件描述符可以用作fcntl函数的参数。 文件描述符和相关函数是POSIX标准的一部分 你提到福彭。 fopen返回一个文件指针。简单地说,在大多数*unix系统上,文件指针是构建在文件描述符之上的东西,但这不是必需的,也可能不是真的。例如,文件指针可能有一些缓冲选项:写入的字节存储在缓冲区中,然后在换行符上刷新。可以使用setvbuf或通过fflush调用手动修改此行为。 您可以使用fileno获取与file*指针关联的文件描述符。然后将此文件描述符与fcntl调用一起使用。文件*指针也不必与文件关联,例如,它可能与内存缓冲区关联,请参阅fmemopen函数。
fopen、fwrite、fclose是C标准的一部分。您似乎在说您已经阅读了一些关于这些函数的一般描述信息。难道你不认为阅读他们的实际文档可以让你更好地理解他们吗?通过谷歌搜索fcntl,我得到了排名前五名的fcntl手册页面的四份副本,以及fcntl.h手册页面的一份副本,这可能是一个更大的宝藏。是的,我已经这样做了,但我从这些信息中什么也没有得到。然后我怀疑我们能否提供一个有用的答案。对于我们来说,即使尝试,你也需要大幅缩小你的问题范围。最好是基于实际的代码。谢谢你的反应