1

我想在不实际下载文件的情况下获取 wget 下载的文件大小。所以我用

wget --spider <url> 2>&1 | grep Length | awk '{print $2}' 

它有效。但是现在我的 c 程序使用这个 shell 代码

int result = system("wget .....");

但是,系统返回退出状态代码,这意味着结果将为 0 而不是给我文件大小。如果我仍然想使用 wget --spider,如何在我的 c 编程代码中获得这个文件大小?提前致谢!

4

1 回答 1

1

您将需要使用 popen() 命令,该命令分叉并打开通往外壳的管道。这个函数接受一个指向你的命令的 char 指针和一个模式。然后它返回一个指向您的命令结果的指针。您的代码如下所示。

 #include <stdio.h>
 #include <stdlib.h>
       int main()
       {
              char *cmd = "wget --spider <url> 2>&1 | grep Length | awk '{print $2}'";
              char buf[128];
              FILE *ptr;

              if ((ptr = popen(cmd, "r")) != NULL){
                      while (fgets(buf, 128, ptr) != NULL)
                              printf("%s", buf);
                      }
                      pclose(ptr);
              }
              return 0;
       }
于 2013-06-21T16:46:22.360 回答