#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的程序使用实例的更多相关文章

  1. Python和其他进程的管道通信方式--popen和popen2的比较

    目前有一个查询程序 get_user_id 是用C写的,python需要调用这个程序:使用 get_user_id  "用户名" 可以得到输出: "ID0002451&q ...

  2. Linux进程间通信(三):匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()

    在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值.这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据. 一.什 ...

  3. 管道与popen函数与重定向

    转自:http://www.tldp.org/LDP/lpg/node12.html Pipes the Easy Way! LIBRARY FUNCTION: popen(); PROTOTYPE: ...

  4. 《Unix 网络编程》13:守护进程和 inetd 超级服务器

    守护进程和 inetd 超级服务器 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  5. APUE读书笔记-第13章-守护进程

    第13章 守护进程 13.1 引言 *守护进程也称精灵进程(daemon)是生存期较长的一种进程.它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNI ...

  6. 13.2、进程的通信:Queue、Pipe、

    内容相关: 概念:进程的通信 Queue:创建与使用 Pipe:创建与使用 进程通信的概念 进程的资源空间是相互独立的,一般而言是不能相互访问的.但很多情况下进程间需要互相通信,来完成系统的某项功能. ...

  7. UNP第13章——守护进程

    1. 守护进程的启动方法 (1)系统初始化脚本启动,在系统启动阶段,按照如/etc目录或/etc/rc开头的目录中的某些脚本启动,这些守护进程一开始就有超级用户权限.如inetd,cron,Web服务 ...

  8. SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......

    SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrame ...

  9. os.popen('python hello_out.py')中Python程序执行时默认的当前路径为MS-DOS CMD的默认路径

    >>> import os >>> os.getcwd() 'D:\\pythonCode\\pp4e' >>> os.chdir('Stream ...

随机推荐

  1. C++基础-位运算

    昨天笔试遇到一道题,让实现乘法的计算方法,设计方案并优化,后来总结位运算相关知识如下: 在计算机中,数据是以1010的二进制形式存储的,1bytes = 8 bits,bit就是位,所以位运算就是对每 ...

  2. 转 fiddler教程

    Fiddler 教程 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发 ...

  3. Cygwin ssh

    http://www.evalumation.com/blog/86-cygwin-windows7-sshd

  4. Qt5制作鼠标悬停显示Hint的ToolTip

    在日常生活中的使用的软件中,我们经常会遇到这样的情况. 我们在网页上,有些网页链接的文字(比如文章标题,知乎问题标题,百度的词条等)因为太长了,而显示不出来,但是鼠标悬停在上面的时候就可以显示出来.  ...

  5. Windows 8.1 RTM初体验

    Windows 8.1正式发布在10月17日,现在可以在MSDN/TechNet进行订阅下载. 操作系统版本号和Windows Server 2012 R2保持一致. 开始屏幕动态磁贴现在有4种尺寸可 ...

  6. 针对苹果最新审核要求 为应用兼容IPv6

    本文授权转载,作者:我不是段誉(简书) 在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.而今年5月初,苹果宣布6 ...

  7. [Swust OJ 85]--单向公路(BFS)

    题目链接:http://acm.swust.edu.cn/problem/0085/ Time limit(ms): 5000 Memory limit(kb): 65535   Descriptio ...

  8. CentOS6.5实现rsync+inotify实时同步

    参考博文: 参考1:CentOS6.5实现rsync+inotify实时同步 参考2:inotify-tools+rsync实时同步文件安装和配置 CentOS 6.3下rsync服务器的安装与配置  ...

  9. 【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素

    1. select 和 selectAll 的区别 在 D3 中,选择元素的函数有两个:select 和 selectAll,它们的使用非常重要.先说明一下它们的区别: select 是选择所有指定元 ...

  10. OKR 方法 学习笔记

    最近公司兴起了对OKR这个词的讨论,并且听到时总会伴随提到KPI,提到绩效考核.那OKR到底是什么呢?与KPI的区别在哪里?与绩效考核有什么关系?它与我们现在推行的敏捷开发有啥关系呢?因此,就到网上查 ...