pipe.c文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void write_data(int *pipes)
{
close(pipes[0]);
size_t len =1;
int buf[5];
int fd = open("file",O_RDONLY);
if(fd == -1)
{
printf("Fail to open file");
exit(0);
}
read(fd,buf,len);
write(pipes[1],buf,len);
close(pipes[1]);
close(fd);
exit(0);
}
void read_data(int *pipes)
{
close(pipes[1]);
size_t len = 1;
char buf[5];
while(read(pipes[0],buf,len) > 0);
if(buf[0] == '1')
printf("hello\n");
else
printf("world\n");
close(pipes[0]);
exit(0);
}
int main()
{
int fd[2];
if(pipe(fd) != 0)
{
printf("Fail to create pipe\n");
return 0;
}
pid_t pid = fork();
if(pid < 0)
{
printf("Fail to create fork\n");
return 0;
}
else if(pid > 0)
{
write_data(fd);
}
else
{
read_data(fd);
}
return 0;
}
Makefile文件
CC = gcc
pipe:pipe.o
$(CC) -o pipe pipe.o
pipe.o:pipe.c
$(CC) -c pipe.c
clean:
rm -f *.o