linux 운영체제 프로그래밍 - 간단한 pipe 파이프
1600 단어 linux 시스템 프로그래밍
하위 프로세스 읽기, 부모 프로세스 쓰기, pipe 파이프로 프로세스 간의 통신을 실현합니다
절차는 다음과 같습니다.
#include
#include
#include
#include
static void child_read(int *);
static void father_write(int *, int );
int main(int argc, const char *argv[])
{
pid_t pid;
int pipe_fd[2];
if (pipe(pipe_fd) < 0) // pipe
{
perror("failed to create pipe");
exit(-1);
}
if ((pid = fork()) < 0)
{
perror("failed to fork pid");
exit(-1);
}
if (pid == 0)
child_read(pipe_fd); //
else
father_write(pipe_fd, pid); //
return 0;
}
static void child_read(int *pipe_fd)
{
char buf[100];
close(pipe_fd[1]); // ,
while (read(pipe_fd[0], buf, sizeof(buf)) > 0) //
{
if (strncmp(buf, "quit", 4) == 0)
exit(0);
printf("read : %s
", buf);
memset(buf, sizeof(buf), 0);
}
return ;
}
static void father_write(int *pipe_fd, int pid)
{
char buf[100];
close(pipe_fd[0]); // ,
while (1)
{
usleep(500);
printf(">");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = 0;
write(pipe_fd[1], buf, strlen(buf) + 1); //
if (strncmp(buf, "quit", 4) == 0)
break;
memset(buf, sizeof(buf), 0);
}
waitpid(pid, NULL, 0);
return ;
}