文件描述符和套接字文件描述符之间的差

时间:2014-03-19 08:05:36

标签: c sockets

我可以将open open返回的文件描述符绑定到套接字吗?

我正在尝试做类似的事情,

 filefd = open("path",O_RDWR);

 ...

 bind (filefd, (struct sockaddr *) &servaddr, sizeof(servaddr));
 connfd = accept (filefd, (struct sockaddr *) &cliaddr, &clilen);

为什么accept调用返回-1?

1 个答案:

答案 0 :(得分:3)

从应用程序的角度来看,区别在于您如何创建和使用描述符。一些系统调用可以采用任何类型的描述符,而其他系统调用则需要特定类型的描述符。

如果您检查错误,那么bind调用也会返回-1。当系统调用返回-1时,您应该检查errno以查看出现了什么问题。您可以使用strerror获取错误的可打印字符串,或perror直接打印错误。