当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

利用管道进行进程的通信示例

      这里用到了 pipe 管道函数:
    int pipe(int file_descriptor[2]);
    函数 pipe 填充的两个整数的含义是两个文件描述符,任何向 file_descriptor[1] 写入的数据,可以从 file_descriptor[0] 中读取,并且写入的数据符合先入先出的规则.

    例 pipe.c:

    #include
    #include
    #include
    #include

    int main()
    {
    int data_processed;
    int file_pipes[2];
    const char some_data[]="123";
    char buffer[BUFSIZ+1];
    int fork_result;

    memset(buffer,'\\0',sizeof(buffer));

    if(pipe(file_pipes)==0){
    fork_result=fork(); /* 设置进程 */
    if (fork_result==-1){
    /* 判断设置进程是否出错 */
    fprintf(stderr,"Fork failure");
    exit(EX99v_FAILURE);
    }

    /* 下面判断,若是是子进程则读管道数据,父进程则向管道写数据 */

    if(fork_result==0){
    /* 判断是否子进程 */
    data_processed=read(file_pipes[0],buffer,BUFSIZ);
    /* 从管道读数据 */
    printf("Read %d bytes:%s\n",data_processed,buffer);
    exit(EX99v_SUCCESS);
    } else {
    /* 父进程 */
    data_processed=write(file_pipes[1],some_data,strlen(some_data));
    /* 向管道写数据 */
    printf("Wrote %d bytes\n",data_processed);
    }
    }
    exit(EX99v_SUCCESS);
    }

    程序运行:./pipe
    执行结果:
    Wrote 3 bytes
    Read 3 bytes:123
    利用管道进行通信成功!

相关内容
赞助商链接