如果重要的话,我正在运行Fedora 13。
我在unix(7),setsockopt和send / recv。
上查找了手册页阅读手册页似乎或多或少地告诉我,并非所有选项都可以保证做任何事情......而且显然只有少数有/无法工作的实际记录。
特别是......我想知道是否有可能超时。至少在我的系统上,SO_RCVTIMEO实际上为recv系列调用设置了一个时间...但SO_SNDTIMEO使套接字似乎将其设置为非阻塞模式,没有超时。
所以我的问题是......我能做些什么来解决这样一个事实:setsockopt不是一种可靠的方法来处理AF_UNIX套接字上的超时?
答案 0 :(得分:1)
嗯,select(2)
或poll(2)
或epoll(4)
超时怎么样?
答案 1 :(得分:0)
我该怎么做才能解决setsockopt不可靠的问题 在AF_UNIX套接字上使用超时的方法吗?
好吧,不要使用它们。
我在G-WAN(Web App。服务器)中使用了epoll(4)并且不得不面对同样的问题。
基本上有三种处理超时的方法:
有些人使用管道唤醒你想要操作的fds。 我的测试表明,这是一种巨大的资源浪费。 无论你做什么,这将是低效或棘手的。 有时,两者(感谢愚蠢的内核开发人员)。
祝你好运。