LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 680|回复: 0

如何获取一个程序的输出

[复制链接]
发表于 2006-1-11 14:16:45 | 显示全部楼层 |阅读模式
我们经常会遇到这样的情况:我们知道怎么使用linux提供的命令得到自己想要的东西,但是有时自己的程序中要用,一时又不知道用哪些库函数,就很郁闷,其实有一个很简单的办法,可以获取一个程序的输出(因为程序简单,就不作解释了):

  1. void get_from_proc(char* buf,int len,const char* argv[])
  2. {
  3.     int pid,total_len=0;
  4.     int pipes[2];

  5.     pipe(pipes);

  6.     if(!(pid=fork()))
  7.     {
  8.         close(pipes[0]);
  9.         dup2(pipes[1],1);
  10.         dup2(pipes[1],2);
  11.         execv(argv[0],argv);
  12.     }

  13.     close(pipes[1]);
  14.     waitpid(pid,0,0);

  15.     total_len=read(pipes[0],buf,len);
  16.     buf[total_len] = 0;
  17. }
复制代码


使用方法:

  1. int main()
  2. {
  3.     char buf[2048];
  4.     char* path[] = {"/bin/ls","/",0};

  5.     get_from_proc(buf,2047,path);

  6.     printf("yeah :%s\n",buf);

  7.     return 0;
  8. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表