linux 운영체제 프로그래밍 - 간단한 pipe 파이프

프로그램 요구 사항:
하위 프로세스 읽기, 부모 프로세스 쓰기, 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 ; }

좋은 웹페이지 즐겨찾기