C 在不定义套接字的情况下发送套接字

标签 c linux sockets

<分区>

这行代码做了什么

send(4, "test\n", 15, 0);

如果代码中没有定义socket呢?

最佳答案

它可能会失败,出现 EBADF 错误(在 errno 中)。

参见 manual page以获得更多可能的错误值。

请注意,它可以成功,如果在它之前有代码设置一个硬编码描述符值为4(第一个参数)的套接字。查看dup()尝试这样做的一种方式的功能。

另请注意,它可能是 父进程 进行该设置,因此它甚至可能在源文件中不可见,只是默默地假设。

最后请注意由于在提供的缓冲区外读取而导致的未定义行为(字符串的长度不是 15 个字符)。这是非常可疑的代码。

关于C 在不定义套接字的情况下发送套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669226/

相关文章:

linux - 在 shell 脚本中通过变量引用文件路径

sockets - 安卓应用 : Address Family not Supported by Protocol

java - 尝试连接到 TCP 服务器时出现套接字异常

linux - linux的scp开源实现

java - 如何销毁Java Process的子进程

C Winsock编程: input garbage

c++ - 像 top 一样的控制台覆盖

c - 当范围很大时如何找到素数?

c - 在 Assembly 中使用 ATOI 将字符串转换为整数时出现问题

c - 这些字符串是否为 fopen() 正确连接?