文章内容
linux下C和shell调用的popen函数
2016-09 点击次数:
睿丰德科技
专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接 说明: 本文介绍popen函数的使用方法和行为机理,并给出实际的例子来辅助说明了popen函数的使用方法。 popen函数使用FIFO管道执行外部程序,首先让我们看看popen的函数原型吧: #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen 通过type是r 还是w 来确定command的输入/输出方向,r和w是相对command的管道而言的。r表示command从管道中读入,w表示 command通过管道输出到它的stdout,popen返回FIFO管道的文件流指针。pclose则用于使用结束后关闭这个指针。 下面一起来看一个例子: /******************************************************************************************* ** Name:popen.c ** This program is used to show the usage of popen() . *******************************************************************************************/ #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int main( void ) { FILE *stream; FILE *wstream; char buf[1024]; memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中 stream = popen( "ls -l", "r" ); //将“ls -l”命令的输出 通过管道读取(“r”参数)到FILE* stream wstream = fopen( "test_popen.txt", "w+"); //新建一个可写的文件 fread( buf, sizeof(char), sizeof(buf), stream); //将刚刚FILE* stream的数据流读取到buf中 fwrite( buf, 1, sizeof(buf), wstream );//将buf中的数据写到FILE *wstream对应的流中,也是写到文件中 pclose( stream ); fclose( wstream ); return 0; } [root@localhost src]# gcc popen.c [root@localhost src]# ./a.out [root@localhost src]# cat test_popen.txt 总计 128 -rwxr-xr-x 1 root root 5558 09-30 11:51 a.out -rwxr-xr-x 1 root root 542 09-30 00:00 child_fork.c -rwxr-xr-x 1 root root 480 09-30 00:13 execve.c -rwxr-xr-x 1 root root 1811 09-29 21:33 fork.c -rwxr-xr-x 1 root root 162 09-29 18:54 getpid.c -rwxr-xr-x 1 root root 1105 09-30 11:49 popen.c -rwxr-xr-x 1 root root 443 09-30 00:55 system.c -rwxr-xr-x 1 root root 0 09-30 11:51 test_popen.txt -rwxr-xr-x 1 root root 4094 09-30 11:39 test.txt
RFID管理系统集成商
RFID中间件 条码系统中间层 物联网软件集成
上一条
Linux下core文件产生的一些注意问题
下一条
pthread_create用法
电脑版
|
触屏版
Powered by
MetInfo 5.3.19
©2008-2025
www.metinfo.cn