持續乙個禮拜的出差終於結束了,本次出差真是收益良多,不僅品嚐了正宗的大閘蟹,同時也是第一次體驗了產品的現場實施流程。
明天開始繼續學習linux!
——————————————————————分割線————————————————————————————————————
因為各種原因,已經有十天沒有更新了,真是太不應該了,以後一定杜絕這種懶惰、無恥的情況!!
——————————————————————分割線————————————————————————————————————
古話說得好,在linux之下,一切皆是檔案。
有很多資源,linux都可以用檔案的方式來使用,在以前的微控制器開發中,也使用過檔案系統,稍稍有那麼一些經驗,所以在這點上的學習,應該難不倒我……
在linux下,常用的檔案操作也無外乎,open,wirte,read,seek之類的。
要使用這些函式,需要包含以下標頭檔案:
#include// 定義了一些資料型別
#include// 定義了open,create函式的原形,建立檔案許可權的巨集s_irusr等
#include// 這裡面定義了write,read,seek等函式原形
#include// 這個主要是用來除錯用的,裡面有乙個變數,如果出了錯誤,那就能用到
簡單瀏覽了一下這些函式的介面,下面開始寫**……
功能:建立乙個名為io_opreation.txt的檔案,在裡面寫一句話,然後關閉,在讀回來。
1 #include2 #include3 #include4 #include5程式寫完了,簡直完美!!!6void main(void)7
;10char writedate = ;
11char readdate[100
];12
1314 fd = open(filename,o_wronly|o_creat,0x777
);15 write(fd,writedate,sizeof
(writedate));
16close(fd);
17 fd =open(filename,o_rdonly);
18 read(fd,readdate,10
);19
20return0;
21 }
現在開始寫makefile
花了半個小時,makefile也完工了:
1 exe=io_opreation編譯一下……咦?2 src=io_opreation.c
3 obj=io_opreation.o
45 cc=gcc
6 cflag=-g
7 lcdflag=89
10exe:$(obj)
11 $(cc) $(lcdflag) $(src) -o $(exe)
1213
obj:$(src)
14 $(cc) -c $(src) -o $(obj)
1516
.phony:clean
17clean:
18 rm -vfr $(obj) $(exe)
io_opreation.c:20:2: 警告: 在無返回值的函式中,『return』帶返回值 [預設啟用]
哦哦哦!原來如此,都怪自己手賤!
1 #include2 #include3 #include4 #include5把返回值的零刪掉,再試一下!6void main(void)7
;10char writedate = ;
11char readdate[100
];12
1314 fd = open(filename,o_wronly|o_creat,0x777
);15 write(fd,writedate,sizeof
(writedate));
16close(fd);
17 fd =open(filename,o_rdonly);
18 read(fd,readdate,10
);19
20return
;21 }
cc -c -o io_opreation.o io_opreation.c
gcc io_opreation.c -o io_opreation
一切大丈夫!!
現在執行一下……
我擦!執行以後怎麼什麼反應都沒有???
原來我都沒有輸出!
修改**,將讀回來的東西,列印出來……對了最後還得呼叫close函式把檔案關了(這算是個bug!需要review!!)。
1 #include2 #include3 #include4 #include5 #include6再度編譯,執行!!void main(void)7
;10char writedate = ;
11char readdate[100
];12
1314 fd = open(filename,o_wronly|o_creat,0x777
);15 write(fd,writedate,sizeof
(writedate));
16close(fd);
17 fd =open(filename,o_rdonly);
18 read(fd,readdate,20
);19
close(fd);
2021 printf("
%s\n
",readdate);
2223
return
;24 }
vmuser@linux-host:~/work/io_opreation$ ./io_opreation
你好啊▒
**執行以後,輸出倒是有了……但是好像**有點不對!那個奇怪的符號是**冒出來的?
read函式讀出了亂碼,趕緊check**……
根據我調查,可能是由於read函式指定的讀取位元組數不夠,因為我改成read(fd,o_rdonly,20)之後,就不存在那個亂碼了!
檔案也是按照要求建立出來了。
vmuser@linux-host:~/work/io_opreation$ ./io_opreation
你好啊!
vmuser@linux-host:~/work/io_opreation$
如果有知道原理的朋友,看見了一定告訴我一下,我會很感激的!
Linux基礎 6 檔案IO操作
linux下一切皆檔案,所以檔案io是很重要的也是很基礎的操作。關於linux檔案io的操作主要有五個方面,分別是開啟,關閉,建立,寫與讀。我們先來看一下開啟檔案open函式 int open const char path,int oflags,mode t mode 引數path表示 路徑名或者...
Python學習筆記 6 檔案
要開啟的檔案應該儲存在你執行的python程式同乙個資料夾下。這個檔案儲存在你啟動python時所在的那個資料夾。fhand open mbox.txt print fhand 如果檔案成功被開啟,作業系統會返回乙個檔案控制代碼。如果檔案不存在,開啟失敗,輸出追蹤錯誤資訊。文字檔案可視為若干文字行的...
C 學習筆記10 檔案IO
scanf 3d f x,y scanf確實可以設定輸入整數的寬度,3d表示取三位整數 printf也可以設定輸出整數的寬度,3d表示輸出至少3位,假如超過3位,有多少輸出多少。本題考查檔案操作函式,fseek用於二進位制方式開啟的檔案,移動檔案讀寫指標位置。將檔案內部的位置指標重新指向乙個流 資料...