13-(1-4)进程管道关于popen(-r-w)及pipe的程序使用实例
- #include<unistd.h>
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- #define BUFSIZE 200
- int main()
- {
- FILE *read_fp;
- char buffer[BUFSIZE+];/*用于存放读取的内容*/
- int chars_read;
- memset(buffer,'\0',sizeof(buffer));
- read_fp=popen("uname -a","r");//用于显示内核版本 及现在时间
- /*返回的是文件指针,因此-文件指针是要定义的*/
- if(read_fp != NULL)
- {
- chars_read=fread(buffer,sizeof(char),BUFSIZE,read_fp);//返回读取字符的个数,错误则为-1
- /*并读取传回的内容是什么*/
- if(chars_read > )
- {
- printf("Output was:-\n%s\n",buffer);
- }
- pclose(read_fp);
- exit(EXIT_SUCCESS);
- }
- exit(EXIT_FAILURE);
- }
- /*因些,使用popen到少要定义:
- 文件指针,
- 字符串
- */
- #include<unistd.h>
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- #define BUFSIZE 50
- int main()
- {
- FILE *read_fp;
- char buffer[BUFSIZE+];/*用于存放读取的内容*/
- int chars_read;
- memset(buffer,'\0',sizeof(buffer));
- read_fp=popen("ps ax","r");//用于显示内核版本 及现在时间
- /*返回的是文件指针,因此-文件指针是要定义的*/
- if(read_fp != NULL)
- {
- while(chars_read > )
- {
- //返回读取字符的个数,错误则为-1
- /*并读取传回的内容是什么*/
- chars_read=fread(buffer,sizeof(char),BUFSIZE,read_fp);
- buffer[chars_read-]='\0';
- printf("Reading %d:-\n %s \n",BUFSIZE,buffer);
- }
- pclose(read_fp);
- exit(EXIT_SUCCESS);
- }
- exit(EXIT_FAILURE);
- return ;
- }
- /*因些,使用popen到少要定义:
- 文件指针,
- 字符串
- */
- #include<unistd.h>
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- #define BUFSIZE 50
- int main()
- {
- FILE *read_fp;
- char buffer[BUFSIZE+];/*用于存放读取的内容*/
- int chars_read;
- memset(buffer,'\0',sizeof(buffer));
- read_fp=popen("cat 13-3-*.cpp | wc -l","r");//用于显示内核版本 及现在时间
- /*返回的是文件指针,因此-文件指针是要定义的*/
- if(read_fp != NULL)
- {
- while(chars_read > )
- {
- //返回读取字符的个数,错误则为-1
- /*并读取传回的内容是什么*/
- chars_read=fread(buffer,sizeof(char),BUFSIZE,read_fp);
- buffer[chars_read-]='\0';
- printf("Reading %d:-\n %s \n",BUFSIZE,buffer);
- }
- pclose(read_fp);
- exit(EXIT_SUCCESS);
- }
- exit(EXIT_FAILURE);
- return ;
- }
- /*因些,使用popen到少要定义:
- 文件指针,
- 字符串
- */
- #include<unistd.h>
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- #define Buffer 100
- int main()
- {
- FILE *write_fp;
- char buffer[Buffer + ];
- //把格式化的数据写入某个字符串缓冲区。
- //返回值:字符串长度(strlen)
- sprintf(buffer,"Once upon a time, there was...\n");
- //********格式化输出文件中的数据***********///
- //-c:等价于-t c,选择ASCII码字符或者是转义字符
- write_fp=popen("od -c","w");
- if(write_fp != NULL)
- {
- fwrite(buffer,sizeof(char),strlen(buffer),write_fp);
- pclose(write_fp);
- exit(EXIT_SUCCESS);
- }
- exit(EXIT_FAILURE);
- }
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- int data_processed;
- int file_pies[];
- const char some_data[]="";
- char buffer[BUFSIZ+];
- memset(buffer,'\0',sizeof(buffer));
- if(pipe(file_pies)==)
- {
- data_processed=write(file_pies[],some_data,strlen(some_data));
- printf("Wrote %d bytes\n",data_processed);
- data_processed=read(file_pies[],buffer,BUFSIZ);
- printf("Read %d bytes: %s\n",data_processed,buffer);
- exit(EXIT_SUCCESS);
- }
- exit(EXIT_FAILURE);
- }
13-(1-4)进程管道关于popen(-r-w)及pipe的程序使用实例的更多相关文章
- Python和其他进程的管道通信方式--popen和popen2的比较
目前有一个查询程序 get_user_id 是用C写的,python需要调用这个程序:使用 get_user_id "用户名" 可以得到输出: "ID0002451&q ...
- Linux进程间通信(三):匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()
在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值.这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据. 一.什 ...
- 管道与popen函数与重定向
转自:http://www.tldp.org/LDP/lpg/node12.html Pipes the Easy Way! LIBRARY FUNCTION: popen(); PROTOTYPE: ...
- 《Unix 网络编程》13:守护进程和 inetd 超级服务器
守护进程和 inetd 超级服务器 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
- APUE读书笔记-第13章-守护进程
第13章 守护进程 13.1 引言 *守护进程也称精灵进程(daemon)是生存期较长的一种进程.它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNI ...
- 13.2、进程的通信:Queue、Pipe、
内容相关: 概念:进程的通信 Queue:创建与使用 Pipe:创建与使用 进程通信的概念 进程的资源空间是相互独立的,一般而言是不能相互访问的.但很多情况下进程间需要互相通信,来完成系统的某项功能. ...
- UNP第13章——守护进程
1. 守护进程的启动方法 (1)系统初始化脚本启动,在系统启动阶段,按照如/etc目录或/etc/rc开头的目录中的某些脚本启动,这些守护进程一开始就有超级用户权限.如inetd,cron,Web服务 ...
- SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......
SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrame ...
- os.popen('python hello_out.py')中Python程序执行时默认的当前路径为MS-DOS CMD的默认路径
>>> import os >>> os.getcwd() 'D:\\pythonCode\\pp4e' >>> os.chdir('Stream ...
随机推荐
- SQL——找出某一字段中内容相同的数据
SELECT columnName from dbo.tableName group by columnName having count(*)>1
- Delphi 中 COM 实现研究手记(一)
前言 前些日子用 Delphi 写了一个 Windows 外壳扩展程序,大家知道 Windows 外壳扩展实际上就是 COM 的一种应用 -- Shell COM,虽然整个程序写得还算比较顺利,但写完 ...
- 用PHP编写Hadoop的MapReduce程序
用PHP编写Hadoop的MapReduce程序 Hadoop流 虽然Hadoop是用Java写的,但是Hadoop提供了Hadoop流,Hadoop流提供一个API, 允许用户使用任何语言编 ...
- 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ...
- hdu 1875 畅通project再续
链接:hdu 1875 输入n个岛的坐标,已知修桥100元/米,若能n个岛连通.输出最小费用,否则输出"oh!" 限制条件:2个小岛之间的距离不能小于10米,也不能大于1000米 ...
- linux下的文件权限
在学习linux中,发现linux系统对文件的权限管理要比windows非常严格. linux下建立新的组:groupadd 组名 linux新建立用户:useradd username 创建用户并分 ...
- 为joomla加入�下拉菜单的方法
用 Joomla! 建站的大多数站长都须要在站点前台使用下拉菜单(dropdown menu),或者叫弹出菜单(slide menu),由于这样能够在有限的页面空间上公布很多其它的导航菜单,而且能够进 ...
- Android Paint、Canvas、Matrix使用讲解(一、Paint)
http://blog.csdn.net/tianjian4592/article/details/44336949 好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和 ...
- Codeforces Round #316 (Div. 2A) 570A Elections
题目:Click here #include <bits/stdc++.h> using namespace std; typedef long long ll; const int IN ...
- 感觉Release有时比Debug要健壮
评估文件夹大小的时候,直接跨线程操作UI界面,Debug崩溃,Release不崩溃. 更多的一种情况是,本机DEBUG下不崩溃,把RELEASE版本到别的机子上,立刻崩溃(登录框的进度条的对象为空,仍 ...