我可以将 open 调用返回的文件描述符绑定(bind)到套接字吗?
我正在尝试做类似的事情,
filefd = open("path",O_RDWR);
...
bind (filefd, (struct sockaddr *) &servaddr, sizeof(servaddr));
connfd = accept (filefd, (struct sockaddr *) &cliaddr, &clilen);
为什么 accept 调用返回 -1?
最佳答案
从应用程序的角度来看,区别在于您如何创建和使用描述符。一些系统调用可以采用任何类型的描述符,而其他系统调用则需要特定类型的描述符。
在你的例子中是 bind
如果您检查了错误,调用也会返回 -1
。当系统调用返回 -1
时,您应该检查 errno
看看出了什么问题。您可以使用 strerror
获取错误的可打印字符串,或 perror
直接打印。
关于c - 文件描述符和套接字文件描述符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22499675/