#include #include #include int main() { char *argv[4]; char buf; int fd[2]; int nullfd = open ("/dev/null", O_RDONLY); pid_t pid; argv[0] = "bash"; argv[1] = "-ic"; argv[2] = "ls"; argv[3] = '\0'; pipe (fd); pid = fork(); if (pid == 0) { setsid (); close (0); close (1); close (2); dup2 (nullfd, 0); dup2 (fd[1], 1); dup2 (fd[1], 2); close (fd[1]); close (nullfd); execvp (argv[0], argv); } close (fd[1]); close (nullfd); while (read (fd[0], &buf, 1) > 0) write (1, &buf, 1); close (fd[0]); }