Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c程序中获取wget文件大小_C_Shell_Command Line_Wget - Fatal编程技术网

在c程序中获取wget文件大小

在c程序中获取wget文件大小,c,shell,command-line,wget,C,Shell,Command Line,Wget,我想获得wget下载的文件大小,而不实际下载文件。所以我用 wget --spider <url> 2>&1 | grep Length | awk '{print $2}' 但是,系统返回退出状态代码,这意味着结果将是0,而不是给我文件大小。如果我仍然想使用wget--spider,如何在我的c编程代码中获得这个文件大小?提前谢谢 您需要使用popen()命令,该命令分叉并打开通向外壳的管道。 此函数接受指向命令的字符指针和模式。然后返回一个指向命令结果的指针。您

我想获得wget下载的文件大小,而不实际下载文件。所以我用

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

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

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

 #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;
       }
#包括
#包括
int main()
{
char*cmd=“wget--spider 2>&1 | grep Length | awk'{print$2}';
char-buf[128];
文件*ptr;
如果((ptr=popen(cmd,“r”)!=NULL){
while(fgets(buf,128,ptr)!=NULL)
printf(“%s”,buf);
}
pclose(ptr);
}
返回0;
}

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

 #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;
       }
#包括
#包括
int main()
{
char*cmd=“wget--spider 2>&1 | grep Length | awk'{print$2}';
char-buf[128];
文件*ptr;
如果((ptr=popen(cmd,“r”)!=NULL){
while(fgets(buf,128,ptr)!=NULL)
printf(“%s”,buf);
}
pclose(ptr);
}
返回0;
}

您需要捕获wget程序的标准输出。关于捕获wget程序的标准输出所需的问题,请参见此处。关于这件事的另一个问题,请看这里