popen 简单用

FILE * popen  const char * command , const char * type );

1. type 参数只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 "r" 则文件指针连接到 command 的标准输出;如果 type 是 "w" 则文件指针连接到 command 的标准输入。

2. command 参数是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用-c 标志,shell 将执行这个命令。

3. popen 的返回值是个标准 I/O 流,必须由 pclose 来终止。前面提到这个流是单向的。所以向这个流写内容相当于写入该命令的标准输入;命令的标准输出和调用 popen 的进程相同。与之相反的,从流中读数据相当于读取命令的标准输出;命令的标准输入和调用 popen 的进程相同。


例子

char buf[8] ={ 0 };

char cmdline[128];
sprintfcmdline,"tmp=`ps|grep %s|grep -v grep`;tmp=`echo $tmp|cut -d \" \" -f1`;ls /proc/$tmp/fd|wc -l","main");
fd = popencmdline, "r");
if fd == NULL)
{
printf"popen error :%s\n", cmdline);
return TRUE;
}
ret = freadbuf, 1, 8, fd);
if ret <= 0)
{
printf"ERROR: Failed fread\n");
pclosefd);
return TRUE;
}
buf[ret-1] = '\0';
pclosefd);

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注