首页 > 系统相关 >进程间通信-信号-pipe-fifo

进程间通信-信号-pipe-fifo

时间:2022-11-13 21:46:41浏览次数:38  
标签:pipe pid fifo 间通信 fd 进程 include

进程间通信-信号-pipe-fifo

pipe

pipe只能用于有血缘关系的进程进行单向通信。调用 pipe 函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过 fd 参数传出给用户程序两个文件描述符, fd[0] 指向管道的读端, fd[1] 指向管道的写端。支持多端读或多端写,但不支持一端同时读写。

例子

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>

#define MAXLINE 80

int main(void)
{
	int n;
	int fd[2];
	pid_t pid;
	char line[MAXLINE];

	if (pipe(fd) < 0)
	{
		perror("pipe");
		exit(1);
	}
	if ((pid = fork()) < 0)
	{
		perror("fork");
		exit(1);
	}
	if (pid > 0)
	{ /* parent */
		close(fd[0]);
		write(fd[1], "hello world 20201327ljm\n", 25);
		wait(NULL);
	}
	else
	{ /* child */
		close(fd[1]);
		n = read(fd[0], line, MAXLINE);
		write(STDOUT_FILENO, line, n);
	}
	return 0;
}


这是父进程把字符串“hello world 20201327ljm”写入到管道,子进程再从管道里面读取出来并且打印到标准输出上面来。

标签:pipe,pid,fifo,间通信,fd,进程,include
From: https://www.cnblogs.com/yycyhyhf/p/16873829.html

相关文章

  • 进程间通信-信号-pipe-fifo
    1.信号signal1、信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为正......
  • 进程间通信-信号-pipe-fifo
    一、有名管道FIFO1.在有名管道(namedpipe或FIFO)提出后,管道(pipe)限制得到了克服。值得注意的是,FIFO严格遵循先进先出(firstinfirstout),对管道及FIFO的读总是从开始处返回......
  • 进程间通信-信号-pipe-fifo
    进程间通信-信号-pipe-fifo有名管道FIFO无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(namedpipe或FIFO)提出后,该限制得到了克......
  • 进程间通信-信号-pipe-fifo
     任务详情编译运行附件中的代码,提交运行结果截图理解代码,特别是相关系统调用的使用。Linux进程间通信进程是程序运行资源分配的最小单位。每个进程各自有不同的用户......
  • 进程间通信-信号-pipe-fifo
    进程间通信-信号-pipe-fifo一、fifo1testmf.c——创建一个fifo2producer/consumer生产者和消费者二、pipe1pipe.c获取参数,执行命令2pipedemo.c获取键盘输......
  • 进程间通信-信号-pipe-fifo
    一、有名管道(FIFO)相关概念FIFO(Firstin,Firstout)为一种特殊的文件类型,它在文件系统中有对应的路径。当一个进程以读的方式打开该文件,而另一个进程以写的方式打开该......
  • 进程间通信-信号-pipe-fifo
    fifo管道在有名管道(namedpipe或FIFO)提出后,管道(pipe)限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FI......
  • 20201317 LYX Linux进程间通信学习
    Linux进程间通信1、匿名管道:pipe2、命名管道:fifo3、内存映射:mmap4、信号进程是程序运行资源分配的最小单位。每个进程各自有不同的用户地址空间,任何一个进程的全局变......
  • 流式数据库PipelineDB之BF杂谈
    流式数据库PipelineDB1.导语PipelineDB是一个PostgreSQL的一个流式数据库,是pg社区的一个扩展。下面来引入PipelineDB里面的一些概念:1.1什么是流?流是一种允许客户端将时序......
  • 进程间通信的方式
    进程通信的介绍进程间通信(ProcessToProcessCommunication)是指在并行计算过程中,各进程之间进行数据交互或消息传递,其通信量的大小主要取决于并行设计的粒度划分和各个......