Skip to content

Instantly share code, notes, and snippets.

@postwait
Created May 13, 2013 17:57
Show Gist options
  • Select an option

  • Save postwait/5570140 to your computer and use it in GitHub Desktop.

Select an option

Save postwait/5570140 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
char cmd[128];
int fd1,fd2,fd3,fd4,svs[2];
printf("no sock_cloexec: %d\n",
(fd1 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)));
printf("no sock_cloexec: %d\n",
(fd2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)));
printf("w/ sock_cloexec: %d\n",
(fd3 = socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP)));
printf("w/ sock_cloexec: %d\n",
(fd3 = socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP)));
printf("fcntl(%d, F_SETFD, FD_CLOEXEC)\n", fd2);
fcntl(fd2, F_SETFD, FD_CLOEXEC);
printf("w/ sock_cloexec/nonblock: %d\n",
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_TCP));
printf("w/ sock_cloexec/ndelay: %d\n",
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NDELAY, IPPROTO_TCP));
printf("w/ sock_cloexec/nonblock/ndelay: %d\n",
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK|SOCK_NDELAY, IPPROTO_TCP));
printf("w/ invalid: %d\n",
socket(AF_INET, SOCK_STREAM|(SOCK_NDELAY<<1), IPPROTO_TCP));
if(socketpair(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0, svs))
perror("socketpair");
printf("socketpair([%d,%d])\n", svs[0], svs[1]);
if(socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0, svs))
perror("socketpair");
printf("socketpair([%d,%d])\n", svs[0], svs[1]);
snprintf(cmd, sizeof(cmd), "/bin/pfiles %d", (int)getpid());
system(cmd);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment