是否有人知道与基于非套接字的文件描述符有效的setsockopt()等效?
具体来说,请考虑以下代码块:
int on = 1;
setsockopt(socketfd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(int));
所有精致和花花公子,现在我们可以避免使用SIGPIPE并在编写时参考EPIPE。但这仅适用于使用accept(),socket()等打开的套接字文件描述符
我正在尝试获取由pipe()调用打开的文件描述符的类似功能,setsockopt()会立即拒绝作为非套接字文件描述符。
对于由pipe()或open()打开的描述符,是否有与上述(setsockopt())等价的内容?
答案 0 :(得分:1)
没有等价物,但您可以使用socketpair
代替创建Unix套接字。
答案 1 :(得分:0)
如果你的最终目标是避免信号altogeather,你可以使用here所述的init和cleanup函数
另见这里的好例子: Automatically executed functions when loading shared libraries
只需编写一个处理您希望避免的信号的init函数,并且每个加载库的程序都会自动拥有您的处理程序
我必须说这 是一个奇怪的必需品,你能否更具体地解决你试图解决的实际问题?