进程间通信 无名管道

(1)无名管道
无名管道(半双工通信的管道,父子进程间的通信)
使用:
无名管道的使用需要用到头文件:#include <unistd.h>
无名管道的函数原型:int pipe(int pipefd[2]);
这里的参数:pipefd包含了两个元素的整型数组
其函数返回值:成功返回0,失败:-1
代码:
#include <stdio.h>   
#include <unistd.h> 
#include <string.h>
#include <sys/wait.h> 
int main(int argc,int *argv[])
{
	int pipefd[2];//定义包含了两个元素的整形数组pipefd
	int ret=pipe(pipefd);
	if(ret==-1)
	{
		printf("创建无名管道失败\n");
		return -1;
	}
	pid_t pid=fork();//创建子进程
	if(pid<0)
	{
		printf("创建子进程失败\n");
		return -1;
	}
	else if(pid==0)
	{
		//子进程
		char buf[100]="dasdasda";
		write(pipefd[1],buf,strlen(buf));//将数据写入管道
		/*
		自己输入
			char buf[100];
			fgets(buf,100,stdin);
			write(pipefd[1],buf,strlen(buf));
		*/
	}
	else if(pid>0)
	{
		//父进程
		char buf[100];
		read(pipefd[0],buf,sizeof(buf));//读出管道的数据
		printf("from child:%s\n",buf);
		wait(NULL);//等待子进程退出
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值