全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:952
推到 Plurk!
推到 Facebook!

linux 檔案讀檔問題

缺席
gundam
一般會員


發表:4
回覆:5
積分:1
註冊:2003-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-04-13 18:28:03 IP:122.147.xxx.xxx 訂閱
小弟 寫了一個程式 程式會自己判讀,有沒有這個檔案,如果沒有就自己生一個檔案
但是如果這個檔案是從別的地方copy 過來的檔案檔名一樣,只是內容不一樣,檔案權限 開到最大 777 在open檔案還是正常的
但到 ret=read() 檔案時ret會回傳-1 代表讀檔有問題,可是程式自己生的檔案就不會有這個問題可以正常讀出

這個是讀檔的副程式
static int check_conf(void)
{
int data[7];
char *buffer;
int ret;
struct stat s;
/* check conf file */
if (stat(cf_file, &s) == 0) {
/* conf file already existed */
cf_fd = open(cf_file, O_RDWR);
if (cf_fd >= 0) {
lseek(cf_fd,0,SEEK_SET);
buffer = calloc(1, s.st_size 1);
read(cf_fd, buffer, s.st_size);
ret = sscanf(buffer, "%d\n%d\n%d\n%d\n%d\n%d\n%d",
&data[0], &data[1], &data[2],
&data[3], &data[4], &data[5],
&data[6]);
log_write("read cf_file\n");
if (ret == 7) { //程式會在這裡出現問題 但如果是程式自己產生的檔案就不會有這個問題<----------------
log_write("read ok \n");
free(buffer);
/* write to driver */
write_conf(data);
close(cf_fd);
return 1;
}
log_write("Failed to get datas from conf file: %d\n", ret);
free(buffer);
close(cf_fd);
}
}
return 0;
}

這是要讀的檔案 程式自己產生的檔案也是這種格式只是數值不一樣
aaa.txt 共7行
-141000
2200
1668600
-1080
90120
-87567480
-176452


謝謝
rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-06-09 10:34:31 IP:60.250.xxx.xxx 未訂閱
 有沒有 
extern int errno;
看是多少.
gundam
一般會員


發表:4
回覆:5
積分:1
註冊:2003-02-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-20 22:53:50 IP:220.132.xxx.xxx 訂閱
這段程式碼的問題我自己找到了
因這程式是在SD卡中運作的,所以從外部COPY 設定檔到SD卡上
在Linux 系統必須要做同步動作,不然會發生檔案讀不到的問題
但同樣程式碼的程式在,WIN系統就不會有這種問題,除非在讀寫時你拔SD卡

謝謝
系統時間:2017-12-13 21:13:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!