在c程序中获取wget文件大小
我想获得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 --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程序的标准输出所需的问题,请参见此处。关于这件事的另一个问题,请看这里