SOCK_CLOEXEC 在执行 exec 时关闭该描述符,相当于 FD_CLOEXEC protocol:当type为SOCK_RAW时需要设置此值说明协议类型,其他类型设置为0即可, 对于protocol为0(IPPROTO_IP)的raw socket。用于接收任何的IP数据包。其中的校验和和协议分析由程序自己完成 返回值: 成功返回socket描述符;失败返回-1,置errno: 底层协议模...
BUILD_BUG_ON(SOCK_CLOEXEC & SOCK_TYPE_MASK); BUILD_BUG_ON(SOCK_NONBLOCK & SOCK_TYPE_MASK); flags = type & ~SOCK_TYPE_MASK; if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) return -EINVAL; type &= SOCK_TYPE_MASK; if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK)) flags...
SOCK_CLOEXEC: 这个属性对应open函数的O_CLOEXEC 该标志作用为,当执行fork并执行exec的时候,在子进程中,自动关闭此描述符 参考:http://blog.csdn.net/chrisniu1984/article/details/7050663*//* 也可以通过如下代码设置 */ intv; v= fcntl(fd, F_GETFD,0); fcntl(fd, F_SETFD, v|FD_CLOEXEC); /* SO...
SOCK_CLOEXEC: 为新打开的文件描述符设置FD_CLOEXEC标志位,该标志位的作用是在进程使用fork()加上execve()的时候自动关闭打开的文件描述符。其实使用fcntl()设置FD_CLOEXEC标志位(也就是用open()的时候设置的O_CLOEXEC标志位)也能达到同样的效果,但跟fcntl()有什么不同呢?在多线程环境中,如果使用fcntl()会多出...
但自Linux内核2.6.17版本起,type参数可以接受服务类型与下面俩个重要的标志相与的值:SOCK_NONBLOCK和SOCK_CLOEXEC。分别表示将新创建的socket设为非阻塞的,以及用fork调用创建子进程时在子进程中关闭该socket。在此之前需要使用额外的系统调用。 protocol:是在前两个参数构成的协议族集合下,再选一个具体的协议...
other similar things on the user level.*/#defineSOCK_PACKET SOCK_PACKET/*Flags to be ORed into the type parameter of socket and socketpair and used for the flags parameter of paccept.*/SOCK_CLOEXEC=02000000,/*Atomically set close-on-exec flag for the ...
socket.SOCK_STREAM socket.SOCK_DGRAM socket.SOCK_RAW socket.SOCK_RDM socket.SOCK_SEQPACKET 这些常量表示套接字类型,用于 socket() 的第二个参数。不同系统可能会有更多其他常量可用。(一般只有 SOCK_STREAM 和 SOCK_DGRAM 可用) socket.SOCK_CLOEXEC ...
在3.7 版更改: When SOCK_NONBLOCK or SOCK_CLOEXEC bit flags are applied to type they are cleared, and socket.type will not reflect them. They are still passed to the underlying system socket() call. Therefore:: sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM | socket.SOCK_NONBLO...
inet_create函数完成struct socket、struct inode、struct sock的创建与初始化后,调用sock_map_fd(sock, flags & (O_CLOEXEC …
SOCK_NONBLOCK可以设置 O_NONBLOCK状态,见fcntl()。SOCK_CLOEXEC可以设置FD_CLOEXEC状态,见open()的O_CLOEXEC。 protocol: 指定协议。确定domain和type后通常只有一个协议与之对应,此时protocol设置为0即可。 2. socketpair() 创建一对互通的套接字 #include <sys/types.h> #include <sys/socket.h> int ...