程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一起talk C栗子吧(第一百三十八回:C語言實例

一起talk C栗子吧(第一百三十八回:C語言實例

編輯:關於C

各位看官們,大家好,上一回中咱們說的是查看環境變量的例子,這一回咱們說的例子是:基於文件描述符的文件操作。閒話休提,言歸正轉。讓我們一起talk C栗子吧!

看官們,我們在前面介紹進程通信的時候簡單地提到過文件操作。文件操作相對進程通信來說要容易一些,因此,當時也沒有做詳細的介紹,不過還是有看官提到了文件操作的內容。為了大家對文件操作有更加清晰的認識,今天我將和大家一起看看文件操作相關的內容。

文件類型

在Linux系統中,一切皆文件。因此,文件操作還是還很重要的內容,Linux中的文件類型有:

常規文件(-); 目錄文件(d); 連接文件(l); 設備文件(b或c); 管道文件(p); 套接字(socket);

我們可以通過ls -al命令來查看目錄中文件的類型。上面括號中的字母表示該命令運行結果中文件類型的表示方法。我們舉個例子進行說明:

ls -al /lib   //我們只截取了一部分命令運行結果,但是足以說明問題
total 684
drwxr-xr-x 24 root root   4096  2月  8  2015 .
drwxr-xr-x 22 root root   4096  3月 19 12:49 ..
drwxr-xr-x  2 root root   4096 11月 27  2014 brltty
lrwxrwxrwx  1 root root     21  2月  1  2015 cpp -> /etc/alternatives/cpp
-rw-r--r--  1 root root  26376  1月  9  2014 libip4tc.so.0.1.0
lrwxrwxrwx  1 root root     17  2月  1  2015 libip6tc.so.0 -> libip6tc.so.0.1.0
-rw-r--r--  1 root root  26376  1月  9  2014 libip6tc.so.0.1.0

該結果第一列的第一個字母就是文件類型,比如d表示該文件是目錄文件,l表示該文件是鏈接文件,-表示該文件是常規文件。該目錄中沒有其它文件類型的文件,我們也就不說了,相信大家在遇到的這類文件的時候也能明白它們的文件類型。今天我們介紹的文件操作,可以用於設備文件以外的其它文件。

文件描述符

明白文件類型後, 我們介紹一下文件描述符。文件描述符由系統提供,系統提供的API接口通過它來操作文件。它通常一個非負整數,而且由系統分配和回收,分配時從最小的數值開始依次增大,文件操作完成後需要手動關閉文件,其實就是告訴系統去回收文件操作符,以便下次再使用,因此文件操作符是一個環保產品,可以循環利用。

文件操作符的值是唯一的,即使操作同一個文件也會有不同的文件操作符。文件操作符的值也不是無究大,它有一個最大值,也就是程序能夠同時打開最多的文件數量,這個值與具體的系統有關,POSIX標准只規定了最小值為16,在Linux中它的默認值為256.不過這個值會隨著系統運行的情況動態變化。

系統默認使用了前三個文件描述符:0,12。它們分別表示標准輸入,標准輸出和標准錯誤。這三個文件描述符比較特殊,每個進程啟動時都會自動打開這三個文件操作符,在進程結束時又會自動關閉它們。也就是說它們是由系統進行管理的,我們只管使用就行,其它的事情交給系統去處理。我們舉個例子來說明:

ls -al /dev/fd/  //我們使用ls命令查看當前進程打開的文件描述符
total 0
dr-x------ 2 tom tom  0  4月 30 10:01 .
dr-xr-xr-x 9 tom tom  0  4月 30 10:01 ..
lrwx------ 1 tom tom 64  4月 30 10:01 0 -> /dev/pts/2
lrwx------ 1 tom tom 64  4月 30 10:01 1 -> /dev/pts/2
lrwx------ 1 tom tom 64  4月 30 10:01 2 -> /dev/pts/2
lr-x------ 1 tom tom 64  4月 30 10:01 3 -> /proc/4012/fd  //當前進程打開的文件描述符為3

從上面的運行結果中可以看到,當前進程打開的文件描述符為3,而0,1,2這三個文件描述符是系統自動打開的。

各位看官,關於文件操作:基於文件描述符的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved