使用popen函数创建ping命令管道
来源:互联网 发布:上海行知学院怎么样 编辑:程序博客网 时间:2024/05/18 00:12
首先介绍下popen函数。
头文件:
#include <stdio.h>
函数定义:
FILE *popen(const char *command, const char*type);
关联函数:
int pclose(FILE *stream);
popen() 函数创建一个管道 ,调用fork建立一个 进程, 并调用shell。因为该函数的返回值是一个普通的标准I/0流,所以它只能用pclose()函数来关闭。
command 参数 是 一个 字符串指针, 指向的是一个 以 null 结束符 结尾的字符串, 这个字符串包含 一个 shell 命令. 这个命令 被送到 /bin/sh 以 -c 参数 执行, 即由 shell 来执行.
type 参数 也是 一个 指向 以 null 结束符结尾的 字符串的指针, 这个字符串 必须是'r' 或者'w’ 来指明 是 读还是写. 因为 管道是被定义成单向的, 所以type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写.
注意,popen 函数的 输出流默认是被全缓冲的.
pclose 函数 等待 相关的进程结束并返回 一个 command 命令的 退出状态.
好了下面根据以上说明作成ping命令管道,如下所示:
#include <stdio.h> #include <stdlib.h> #define REMOTEIP "192.168.100.11"int main( ){char psBuffer[512];FILE *pPing;pPing = popen( "ping " REMOTEIP, "r" );if( pPing == NULL ){printf("error end\n");exit( 1 );}while(fgets(psBuffer, 512, pPing)){printf("%s", psBuffer);}pclose(pPing);}
编译运行如下:
[root@xxx ping]# gcc ping.c [root@xxx ping]# ./a.out PING 192.168.100.11 (192.168.100.11) 56(84) bytes of data.64 bytes from 192.168.100.11: icmp_seq=1 ttl=64 time=2.19 ms64 bytes from 192.168.100.11: icmp_seq=2 ttl=64 time=0.352 ms64 bytes from 192.168.100.11: icmp_seq=3 ttl=64 time=0.322 ms64 bytes from 192.168.100.11: icmp_seq=4 ttl=64 time=0.305 ms^C[root@ xxx -vm ping]#
0 0
- 使用popen函数创建ping命令管道
- linux c之通过popen和pclose函数创建管道执行shell 运行命令使用总结
- C语言popen创建管道文件循环执行shell命令
- 在native层使用popen执行ping命令
- 关于管道的popen函数
- 使用popen函数执行shell命令
- 管道通信(使用使用popen和pclose函数可以简洁的控制管道)
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 基于管道的popen和pclose函数
- 管道-popen
- 管道popen
- 如何编写更棒的代码:11个核心要点
- debian/ubuntu设置apt-get源
- hdu3853 loops cf148D
- 《Java并发编程实战》第七章 取消与关闭 读书笔记
- sqlserver 聚集索引和非聚集索引实例
- 使用popen函数创建ping命令管道
- 如何编写更棒的代码:11个核心要点
- v$dataguard_stats里的transport lag与apply lag的含义
- C#中的Process类使用
- UML解惑:图说UML中的六大关系
- 一切成功源于积累——20140528 失意的黄金 宁愿错过也不要做错
- wampserver如何更改端口&&关闭占用端口
- 迅雷重启IPO小米讲新故事
- STL常用算法