如何在c中捕获execvp()函数的输出?

时间:2015-11-02 16:21:35

标签: c

我在C中使用execvp()功能。
我的代码:

pid_t pid = fork();
 if(pid < 0)
            printf("Fork faild\n");
         else if(pid == 0)
         {
            // chirld process
         } 
         else
         {
            // parent process
            execvp(args[0],args) 
         }
args变量的

"ls"。我的屏幕显示特定文件,例如

  

a.txt,b.c,c.pdf

....等。 那么..这个函数可以返回变量吗? 如:

  

char str [MAX] =“a.txt b.c c.pdf”;

抱歉我的英语不好。

更新

我需要使用execvp()send()recv()函数的结果从服务器发送到客户端。

1 个答案:

答案 0 :(得分:0)

如果它足以捕获标准输出,popen是一个很好的git。它将创建一个管道,并将在引擎盖下分叉,因此不需要手动完成。

popen用法的简单示例:

#include <stdio.h>

int main(void)
{
        FILE* p = popen("ls -la", "r");
        if (!p) return 1;

        char buff[1024];
        while (fgets(buff, sizeof(buff), p)) {
                printf("%s", buff);
        }
        pclose(p);

        return 0;
}