Linux下的进程间通信课件.ppt

Linux下的进程间通信课件.ppt

ID:57058152

大小:404.00 KB

页数:53页

时间:2020-07-30

Linux下的进程间通信课件.ppt_第1页
Linux下的进程间通信课件.ppt_第2页
Linux下的进程间通信课件.ppt_第3页
Linux下的进程间通信课件.ppt_第4页
Linux下的进程间通信课件.ppt_第5页
资源描述:

《Linux下的进程间通信课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux下的进程间通信:管道管道管道逻辑上是管道文件;物理上是文件系统的高速缓冲;Shell管道:cmd1

2、cmd2进程中(创建)的管道:进程之间传递数据管道接口-popenpopen:在进程中创建新进程运行另外的程序;原函:#includeFILE*popen(constchar*com,constchar*p_m);intpclose(FILE*f);p_m为‘r’,’w’分别表示调用程序读取被调用程序的输出以及调用程序向被调用程序写数据(被调用程序从标准输入设备读取这些数据,被调用程序感知不到(进程和标准设备)区别);popenpopen调用f

3、ork创建子进程,然后调用/bin/sh–c执行com命令.参数p_m可以是‘r’(代表读取)或者‘w’(代表写入).popen依p_m不同值建立管道连接到子进程的标准输出设备或标准输入设备.所有使用文件指针(FILE*)操作的函数也都可以使用这种连接.成功返回FILE指针,失败返回NULL,错误原因在errno中;因为返回的是FILE指针,所以需要使用fread/fwrite函数进行读写;pclosepclose:当popen启动的进程结束时,pclose关闭与之关联的文件流;原函:#includeintpclose(FILE*f);pclose的形

4、参就是popen返回的FILE指针;返回调用进程的退出码;popen/pclose实例1-读#include#include#include#includeintmain(){FILE*read_fp;charbuffer[BUFSIZ+1];intchars_read;memset(buffer,’’,sizeof(buffer));read_fp=popen("ls-l","r");将ls–l命令的标准输出作为当前进程的输入文件流FILEBUFSIZ在stdio.h中定义popen1.

5、cif(read_fp!=NULL){chars_read=fread(buffer,sizeof(char),BUFSIZ,read_fp);if(chars_read>0){printf("Outputwas:-%s",buffer);}pclose(read_fp);exit(EXIT_SUCCESS);}exit(EXIT_FAILURE);}-rwxrwxrwx1gyhgyh365Feb2215:45client.h-rwxrwxrwx1gyhgyh240Feb2215:45fifo1.c-rwxrwxrwx1gyhgyh1663Feb2215:45f

6、ifo2.c-rwxrwxrwx1gyhgyh1237Feb2215:45fifo3.c-rwxrwxrwx1gyhgyh899Feb2215:45fifo4.-rwxrwxrwx1gyhgyh268Feb2215:45…EXIT_SUCCESS,EXIT_FAILURE在stdlib.h中定义popen/pclose实例2-写已知’od-c’命令是八进制输出ASCII码或者’’转义字符.如”Onceuponatime,therewas…”经过od–c处理之后的效果如下:0000000Onceuponatime0000020,therewas...000003

7、7试将该字符串利用popen与’od-c’命令对其进行处理将输出送往popen#include#include#includeintmain(){FILE*write_fp;charbuffer[BUFSIZ+1];sprintf(buffer,"Onceuponatime,therewas...");write_fp=popen("od-c","w");if(write_fp!=NULL){fwrite(buffer,sizeof(char),strlen(buffer),write_fp);pclose(

8、write_fp);exit(EXIT_SUCCESS);}exit(EXIT_FAILURE);}0000000Onceuponatime0000020,therewas...0000037结果popen2.c多数据传送实例#include#include#include#includeintmain(){FILE*read_fp;charbuffer[BUFSIZ+1];intchars_read;memset(buffer,'',sizeof(bu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。