作者a942195 (Truth)
看板LinuxDev
標題[問題] wget 下載
時間Mon Nov 10 23:09:04 2014
最近在版子上要從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
不知道這樣的寫法對不對 想說會不會是同步下載的關係 難道不能等一個下載玩
在接下一個嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.170.126
※ 文章網址: http://webptt.com/m.aspx?n=bbs/LinuxDev/M.1415632147.A.766.html
1F:推 filiaslayers: 你怎麼不用script來做? 11/10 23:10
2F:推 cutekid: 要不要把 cmd printf 出來看一下 11/11 11:36
3F:→ lantw44: 有沒有可能 128 不夠大? 11/11 21:03
4F:→ qsort: char *img[][2]有點怪,img ia a array pointers to char[2] 11/12 08:47
5F:→ qsort: 所以你每個image name最多就兩個char, 扣掉\0, 剩一個char 11/12 08:47
6F:→ qsort: 請問你的檔名是"a"這類的嗎? 11/12 08:48
7F:→ qsort: 再來是,請不要用strcat, 那是下流的寫法 11/12 08:49
8F:→ qsort: int len=0; //reset buff to head 11/12 08:55
9F:→ qsort: len+=snprintf(buff+len,sizeof(buff)-len,format,...); 11/12 08:56
10F:→ qsort: 建議把snprintf學起來,strcat真的不要再用了。 11/12 08:57
11F:→ qsort: 嗯, 總結: 請愛用script. 11/12 08:58
12F:推 dirkc: 原po的char *img[][2]部份應該無錯,img[][]是char * 11/12 11:28
13F:推 qsort: @dirkc: 你說的對﹐是我誤會成"char img[][2]", 但我還是覺 11/12 13:01
14F:→ qsort: 得有可能原po誤用了,一般人不會用到這麼復雜的(char*)[][] 11/12 13:02
15F:→ a942195: 感謝樓上大大的回復 我在試看看 我也覺得strcat 很蠢 所 11/12 19:33
16F:→ a942195: 所以也有想到用snprintf 11/12 19:34
17F:噓 s942816: 學生?文組 08/13 00:31