who|sort实现
宗旨:技术的学习是有限的,分享的精神是无限的。
创建无名管道,执行who命令的进程将输出重定向到管道的写端;执行sort命令的进程将输入重定向到管道的读端。即who的输出连接到sort的输入。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <stdlib.h>#define PIPE_SIZE 128int main(void)
{int fds[2];if(pipe(fds) == -1){perror("pipe");exit(EXIT_FAILURE);}if(fork() == 0){char buf[PIPE_SIZE];dup2(fds[0], 0);close(fds[1]);execlp("sort", "sort", (char *)0);}else{if(fork() == 0){dup2(fds[1], 1);close(fds[0]);execlp("who", "who", (char *)0);}else{close(fds[0]);close(fds[1]);wait(NULL);wait(NULL);}}return 0;
}