|
|
我们经常会遇到这样的情况:我们知道怎么使用linux提供的命令得到自己想要的东西,但是有时自己的程序中要用,一时又不知道用哪些库函数,就很郁闷,其实有一个很简单的办法,可以获取一个程序的输出(因为程序简单,就不作解释了):
- void get_from_proc(char* buf,int len,const char* argv[])
- {
- int pid,total_len=0;
- int pipes[2];
- pipe(pipes);
- if(!(pid=fork()))
- {
- close(pipes[0]);
- dup2(pipes[1],1);
- dup2(pipes[1],2);
- execv(argv[0],argv);
- }
- close(pipes[1]);
- waitpid(pid,0,0);
- total_len=read(pipes[0],buf,len);
- buf[total_len] = 0;
- }
复制代码
使用方法:
- int main()
- {
- char buf[2048];
- char* path[] = {"/bin/ls","/",0};
- get_from_proc(buf,2047,path);
- printf("yeah :%s\n",buf);
- return 0;
- }
复制代码 |
|