pipe管道:
这个管道不是用来通水流的,而是用来通数据流的,一根管道有两头,可以用两个文件描叙符fd[2]来表示,fd[0]代表读端,fd[1]代表写端,通常是父进程一头,子进程一头,方便在父子进程之间进行数据的交流。
#include <unistd.h>
#define Max 100
int main()
{
int n;
int fd[2];
pid_t pid;
char line[Max];
if(pipe(fd) < 0)//用pipe函数创建管道
{perror("pipe error\n");}
if((pid = fork()) < 0)//再用fork函数创建子进程
{perror("fork error\n");}
else if(pid > 0)//parent
{
close(fd[0]);//关掉父进程的读端
write(fd[1],"hello world\n",12);
}
else {
close(fd[1]);//关掉子进程的写端
n = read(fd[0],line,Max);
write(STDOUT_FILENO,line,n);
}
return 0;
}
这个管道不是用来通水流的,而是用来通数据流的,一根管道有两头,可以用两个文件描叙符fd[2]来表示,fd[0]代表读端,fd[1]代表写端,通常是父进程一头,子进程一头,方便在父子进程之间进行数据的交流。
#include <unistd.h>
#define Max 100
int main()
{
int n;
int fd[2];
pid_t pid;
char line[Max];
if(pipe(fd) < 0)//用pipe函数创建管道
{perror("pipe error\n");}
if((pid = fork()) < 0)//再用fork函数创建子进程
{perror("fork error\n");}
else if(pid > 0)//parent
{
close(fd[0]);//关掉父进程的读端
write(fd[1],"hello world\n",12);
}
else {
close(fd[1]);//关掉子进程的写端
n = read(fd[0],line,Max);
write(STDOUT_FILENO,line,n);
}
return 0;
}