檔案操作一

2021-06-23 03:44:23 字數 1816 閱讀 8665

1、在linux中,一切(幾乎一切)都是檔案,包括檔案目錄。磁碟檔案、序列口、印表機和其他裝置都是用相同的檔案訪問方式,很多情況下,訪問只需要使用5個基本的函式:open、close、read、write和ioctl(把控制資訊給裝置驅動程式)。

2、所有使用者通常使用上層的opendir/readdir介面來讀取目錄。

3、檔案,除了本身包含的內容以外,它還有乙個名字和屬性,即「管理資訊」,包括檔案的建立/修改日期和它的訪問許可權。這些屬性被儲存在檔案的inode(節點)中,這些節點是檔案系統中的乙個特殊資料塊,同時包含檔案的長度和檔案在磁碟中的存放位置。系統使用的是檔案的inode編號,目錄結構為檔案命名僅僅方便使用者使用。

4、目錄用於儲存其他檔案的節點號和名字的檔案,目錄檔案中的每個資料項都是指向某個檔案節點的鏈結,刪除檔案等於刪除與只對應的目錄項,同時指向該檔案的鏈結數減1,但是檔案資料仍可以通過其他指向該檔案的鏈結訪問到,如果指向某個檔案的鏈結數(即ls -l)命令的輸出中跟在訪問許可權後面的那個數字為0,就表示該節點以及其指向的資料不再被使用,磁碟上的相應位置就會被標記為可用空間。

5、可以將乙個硬體裝置對映為檔案,作為超級使用者,可以使用命令將ide cd-rom驅動器掛載為乙個檔案:

mount -t  iso9660 /dev/hdc  /mnt/cdrom

cd /mnt/cdrom

6、linux/unix中比較重要的三個裝置檔案:/dev/console, /dev/tty, /dev/null。

7、直接使用底層系統呼叫(open/read/write/close/ioctl)來進行輸入輸出操作的效率比較低,主要因為:(1)使用系統呼叫會影響系統的效能,由於需要從使用者**切換到核心**,這種開銷很大;(2)硬體會限制對底層系統呼叫一次所能讀寫的資料塊大小。因此,為了給裝置和磁碟檔案提供更高層的介面,linux提供了一系統的標準函式庫,可以讓使用者應用到自己的程式中。

8、底層檔案訪問。每個執行中的程序有一些與只關聯的檔案描述符,當乙個程式開始執行時,它一般有3個已經開啟的檔案描述符:0: 標準輸入;1:標準輸出;2:標準錯誤。

9、標準輸出示例

#include

#include

#include

int main()

return 0;

10、從標準輸入讀取資料示例

#include

#include

#include

int main();

int nread;

nread = read(0, buffer, 128);

if(nread==-1)

write(2,"read errror!\n",16);

if((write(1,buffer,nread))!= nread)

write(2,"write error!\n",16);

return 0;

}test:

$ gcc -o ******_read ******_read.c

$ chmod +x ******_read

$ echo hello,world! | ./******_read

hello,world!

$ ./******_read < ******_write.c

#include

#include

#include

int main(){

int len = strlen("hello,world!\n");

int rc = write(1,$

//only get 128 bytes from ******_write.c, and $ is following behind

檔案操作(一)

先學習兩個概念 指標常量和常量指標 1.指標常量 char const pstr 表示pstr是乙個指標常量,即pstr本身是乙個常量,其值是不可以改變的,我們要在定義是對其初始化,即定義之後有操作pstr pstr1是錯誤的,而通過pstr來改變其所指向的buffer的內容則是允許的,即 pstr...

檔案基本操作(一)

一 1 什麼是檔案?檔案是作業系統為使用者或應用程式提供的乙個讀寫硬碟的虛擬單位 檔案的操作核心就是 讀 寫 即我們只需要對於進行讀寫操作,就是對作業系統發起請求,然後由作業系統將使用者或者應用程式 對檔案的讀寫操作轉換成具體的硬碟指令 比如控制碟片轉動,控制機械手臂移動來讀寫資料 2 為什麼要有檔...

python檔案操作 一

開發十年,就只剩下這套架構體系了!usr bin env python coding utf 8 created on 2015年4月16日 author administrator import os,time print time.ctime os.path.getmtime r c aa bb...