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 128
int 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;
}