当前位置: 首页 > 面试题库 >

可能导致sock send()命令上的“资源暂时不可用”的原因

郎聪
2023-03-14
问题内容

什么会导致Resource temporarily unavailable套接字send()命令出错?套接字设置为AF_UNIX, SOCK_STREAM。它在大多数时间都有效,但偶尔会出现此错误。插槽的接收端似乎工作正常。

我知道这不是很详细,但我只是在寻找一般想法。谢谢!


问题答案:

"Resource temporarily unavailable"是与相对应的错误消息EAGAIN,这意味着该操作将被阻止,但请求了非阻止操作。对于send(),这可能是由于以下原因之一:

  • 显式地将文件描述符标记为非阻塞fcntl();要么
  • MSG_DONTWAIT旗帜传递给send(); 要么
  • 使用SO_SNDTIMEO套接字选项设置发送超时。


 类似资料:
  • 什么会导致套接字命令上的错误?套接字设置为。它大部分时间都在工作,但偶尔会得到这个错误。插座的接收端似乎工作正常。 我知道这不是很详细,但我只是在寻找大致的想法。谢了!

  • 我在C中使用tcp套接字服务器和客户端。使用AF_INET、SOCK_STREAM和IPPROTO_TCP 在sock send()命令上有一个可能导致“资源暂时不可用”的帖子,其中Davide Berra说 这是因为您使用的是非阻塞套接字,并且输出缓冲区已满。 从send()手册页

  • 我试图让父进程在父进程继续之前等待多个子进程发出信号,使用未命名信号量数组(每个子进程一个信号量)。但是,当使用sem_wait()时,父进程将无限期地等待,而sem_trywait()返回“资源暂时不可用”错误,并在子进程没有发出信号的情况下继续。sem_init()和sem_post()都不返回错误。 编辑以添加:sem_wait()遇到错误,无论子进程在等待之前还是之后调用sem_post(

  • res\drawable\mylayerlistdrawable.xml ----------------------------------------------------------------------------------- 最终答案 在api 21之前的xml可提取资源中,我们不能使用?attr。由aapt在编译时创建的可提取资源。运行时用于动态连接的Attr资源。 解决方案是为

  • 创建套接字 使其非阻塞 呼叫连接 按预期返回-1和errno EINPROGRESS 调用select 返回>0,因此已建立连接 再次阻塞套接字 此部件的代码如下: 那还行。但是我有一个循环,在这个循环中我调用了一个函数,该函数检查是否收到了要读取的新数据包: