[问题] wget 下载

楼主: a942195 (Truth)   2014-11-10 23:09:04
最近在版子上要从server端下载更新档来更新
int download_file(char *img[][2],int count){
char cmd[128] = {0};
int i;
//strcat(cmd,"wget -O /data/update.xml'");
for( i=0;i<count;i++){
strcat(cmd,"wget ");
strcat(cmd,"-O /Data/");
strcat(cmd,img[i][0]);
strcat(cmd," ");
strcat(cmd,"\"");
strcat(cmd,url);
strcat(cmd,"?");
strcat(cmd,"&img_name=");
strcat(cmd,img[i][0]);
strcat(cmd,"&token=");
strcat(cmd,token_decrypt);
strcat(cmd,"\"");
system(cmd)
memset(cmd,0,sizeof(cmd));
}
但是发现到下载到的档案跟原本的档案大小差很多 而且还会出现segmentation fault
不知道这样的写法对不对 想说会不会是同步下载的关系 难道不能等一个下载玩
在接下一个吗?
作者: filiaslayers (司马云)   2014-11-10 23:10:00
你怎么不用script来做?
作者: cutekid (可爱小孩子)   2014-11-11 11:36:00
要不要把 cmd printf 出来看一下
作者: lantw44 (#######################)   2014-11-11 21:03:00
有没有可能 128 不够大?
作者: qsort (Cos)   2014-11-12 08:47:00
char *img[][2]有点怪,img ia a array pointers to char[2]所以你每个image name最多就两个char, 扣掉\0, 剩一个char请问你的档名是"a"这类的吗?再来是,请不要用strcat, 那是下流的写法int len=0; //reset buff to headlen+=snprintf(buff+len,sizeof(buff)-len,format,...);建议把snprintf学起来,strcat真的不要再用了。嗯, 总结: 请爱用script.
作者: dirkc (3781615)   2014-11-12 11:28:00
原po的char *img[][2]部份应该无错,img[][]是char *
作者: qsort (Cos)   2014-11-12 13:01:00
@dirkc: 你说的对﹐是我误会成"char img[][2]", 但我还是觉得有可能原po误用了,一般人不会用到这么复杂的(char*)[][]
楼主: a942195 (Truth)   2014-11-12 19:33:00
感谢楼上大大的回复 我在试看看 我也觉得strcat 很蠢 所所以也有想到用snprintf

Links booklink

Contact Us: admin [ a t ] ucptt.com