c語言基礎(十一)

文件:
1、靜態文件(inode)
硬盤中的文件,就是靜態文件。文件都是以多個塊和多個扇區組成的。一般情況,一個扇區(512字節),64個扇區組成一個塊。在硬盤中,對文件管理有一個特定規則(文件管理表+真實的內容):文件管理表,這個表中是以文件爲單位提供了各個文件的所有信息 (每一個文件信息表就對應一個結構體,這個結構體就稱之爲inode,也叫i節點,這個文件的包含的多少塊、多少扇區),而我們通過查找這個表就可以找到我們所需要文件的內容。
我們找文件,通過(文件名字)找的。第一步:在文件管理表中,找到這個文件的名字,第二部,訪問這個文件。U盤格式化:1、快速格式化,清除了你的文件管理表,文件系統就找不到你所需要的文件名字 ,你的真實內容還在硬盤裏,可以部分恢復 2、徹底格式化,這個就是把文件真實內容也清除掉了,u盤不能通過軟件技術恢復了,必須藉助國家安全機構(通過物理機制,通過硬件的記憶恢復)。
聯繫:生活中,處理小文件的一個手段,文件壓縮。把扇區的空餘字節都利用起來,減少了佔用硬盤上的空間。硬盤喜歡大文件。
2、動態文件(vnode),在內存中。
一個程序的運行就是一個進程,而我們打開的文件就屬於這個進程。而操作系統對於每一個進程都有一個結構體進行管理,這個管理當前進程所有信息的結構體,我們就叫做(進程信息表)。這個表中有一個指針指向我們的文件管理表,這個文件管理表就包含了本進程打開的所有文件,通過查找文件管理表的index(文件描述符fd,相當於這個結構體數組的下標),就得到了我們的文件所有信息的結構體(Vnode,V節點),而這個結構體的指針就是文件指針。
文件屬性:
//指的是:文件的內容發生改變
最近更改:2018-01-25 18:11:16.082959503 +0800
//指的是:文件的權限發生改變
最近改動:2018-01-25 18:11:16.082959503 +0800
3、文件與流
系統級別文件操作函數:文件IO;標準庫提供的操作文件函數:標準IO.區別在於,可移植性。
文件IO可以完成對文件所有操作,但是效率不高,所以出現使用標準IO。但是你的知道,標準IO最終也是通過文件IO實現的。
流:字符流的意思。讀寫文件的時候,是一個一個字符操作的,連續進行。文件內容中是不分,行緊緊連在一起的。

文件複製:1、連續打開同一個文件(inode) 2、C語言裏API(dup、dup2)3、多個進程打開同一文件

服務器:
1、建立一個socket通信,相當於(open)作用。
2、服務器端的結構體進行填充:struct sockaddr_in
3、綁定網絡結構體信息和這個網絡通信fd(由第一步得到的文件描述符)
4、監聽這個ip和port:listen
5、等待客戶端的連接:accept。是一個阻塞函數, 創建一個連接通信的fd
6、至於誰先發數據,沒有規定。兩者(s/c)都可以。但是要注意點:一旦確定某一方發送數據,另一方就必須接收數據。

客戶端:
1、建立一個socket通信,相當於(open)作用。
2、客戶端的結構體進行填充:struct addr_in,客戶端的port服務器沒有一點關係。
2.1、服務器端的結構體進行填充:struct addr_in
3、綁定網絡結構體信息和這個網絡通信fd(由第一步得到的文件描述符)(可有可無)
4、客戶端連接你的服務器:connect(fd, 服務器的結構體)
perror:
只有錯誤編碼被設定errno的函數,纔可以用perror(printf 0f errno).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章