进程间通讯读书笔记

进程间通讯以及他们的优缺点
本质:一切皆文件
1.管道:pipe
缺点:单向,半双工,缓冲区受限制,传输无格式字节流
过程:一读一写
头文件#include <unistd.h>
有名:
int mkfifo (canst char * pathname, mode t mode)
该函数的第一个参数是一个普通的路径名,也就是创建后FIFO的名字。 第二个参数与打开普通文件的open()函数中的mode参数相同。 如果mkfifo的第一个参数是一个已经存在的路径名时,会返回EXIST错误,所以一般典型的调用代码首先会检查是否返回该错误,如果确实返回该错误,那么只要调用打开FIFO的函数就可以了。一般文件的1/0函数都可以用于FIFO,如close、 read、 write等。
无名:int fd[2] ;
/*定义子进程号*/
pid_t pid;
char buf[256];
//int pipe(int fd[2]);
pipe ( fd) ;
/*创建子进程*/
pid=fork () ;
if (pid<0) {
printf(”Error in fork\n”);
exit (1) ;
}
else if (pid == 0) {/*执行子进程*/
printf(”in the child process . . . \n”),
子进程向父进程写数据,关闭管道的读端*/
close(fd[INPUT]);
write(fd[OUTPUT,”hello world ”, strlen(”hello world" ));
exit (0) ;
}
else {/*执行父进程*/
printf(”in the parent process . … \n”);
/*父进程从管道读取子进程写的数据, 关闭管道的写端*/
close(fd[OUTPUT]);
returned_count = read ( fd [INPUT] , buf, sizeof (buf));
printf(”%d bytes of data received from child process:%s\n”, returned_count,buf)
}
return 0;
}
配合fork使用
0读,1写
明天写共享内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值