#define _GNU_SOURCE #include #include #include #include #include int main(int argc, char ** argv) { int s = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0); struct sockaddr_in addr = { .sin_family = AF_INET, .sin_port = 12345, .sin_addr = 0, }; if(bind(s, &addr, sizeof(addr)) == -1 || listen(s, 128)) abort(); int fd = accept4(s, NULL, NULL, SOCK_CLOEXEC); if(fd == -1) abort(); dup2(fd, 0); execvp(argv[1], argv + 1); }