• 无名管道


    无名管道
    无名管道时半双工的,就是对于一个管道来讲,只能读,或者写。
    无名管道只能在相关的、有共同祖先的进程间使用。
    一个fork或者exec调用创建的子进程继承了父进程的文件描述符。
     
     
    打开和关闭管道。

    int pipe(int filedes[2]);

    在你从一个管道中读出或者写入数据,这个管道必须存在。
    如果成功建立了管道,则会打开两个文件描述符,并把它们的值保存在一个整数数组中。
    第一个文件描述符用于读取数据,第二个文件描述符用于写入数据。
    如果出错返回-1,同时设置errno
    关闭一个管道用close()函数
     
     
    读写管道。
    读写管道与读写普通文件方式一样,调用write与read函数即可。
    几乎不会在一个进程中打开一个管道仅供进程自己使用,管道是用来交换数据的。
    因为一个进程已经能够访问它要通过管道共享的数据,和自己共享数据是没有意义的。
    试图对一个管道的两端进行读写操作是一个严重的错误。
     
     
    读写无名管道的例子。
    int main(int arg, char * args[])
    {
        int fd[2];char buf[100];int len;
        pipe(fd);
        memset(buf, 0, sizeof(buf));
        int pid = fork();
        if (pid == 0)
        {
            close(fd[1]);
            while((len = read(fd[0], buf, sizeof(buf))) >0)
            {
                write(STDOUT_FILENO, buf, len);
            }
            close(fd[0]);
        }
        else
        {
            close(fd[0]);
            strcpy(buf, "hello world
    ");
            write(fd[1], buf, sizeof(buf));
            close(fd[1]);
            waitpid(pid, NULL, 0);
        }
        return 0;
    }
  • 相关阅读:
    javascript运算符
    javascript字符串转数字
    javascript的变量声明和数据类型
    javascript的历史和入门
    CSS中定位
    CSS中盒子模型
    CSS操作表格的边框和表格的属性示例代码
    常用的CSS样式示例代码
    CSS伪类选择器
    CSS选择器
  • 原文地址:https://www.cnblogs.com/shichuan/p/4496163.html
Copyright © 2020-2023  润新知