<分区>
这行代码做了什么
send(4, "test\n", 15, 0);
如果代码中没有定义socket呢?
<分区>
这行代码做了什么
send(4, "test\n", 15, 0);
如果代码中没有定义socket呢?
最佳答案
它可能会失败,出现 EBADF
错误(在 errno
中)。
参见 manual page以获得更多可能的错误值。
请注意,它可以成功,如果在它之前有代码设置一个硬编码描述符值为4
(第一个参数)的套接字。查看dup()
尝试这样做的一种方式的功能。
另请注意,它可能是 父进程 进行该设置,因此它甚至可能在源文件中不可见,只是默默地假设。
最后请注意由于在提供的缓冲区外读取而导致的未定义行为(字符串的长度不是 15 个字符)。这是非常可疑的代码。
关于C 在不定义套接字的情况下发送套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669226/