歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> Linux文件 I\O 介紹

Linux文件 I\O 介紹

日期:2017/3/2 17:13:20   编辑:Linux基礎知識

Linux文件 I/O 介紹

1. Linux系統調用

Linux系統調用(system call)是指操作系統提供給用戶程序的一組“特殊接口”,用戶程序可以通過這組“特殊”接口來獲得操作系統提供的特殊服務。

為了更好的保護內核空間,將程序的運行空間分為內核空間和用戶空間,他們運行在不同的級別上,在邏輯上是相互隔離的。在Linux中,用戶程序不能直接訪問內核提供的服務,必須通過系統調用來使用內核提供的服務。

Linux中的用戶編程接口(API)遵循了UNIX中最流行的應用編程界面標准——POSIX。這些系統調用編程接口主要是通過C庫(libc)實現的。

2. 文件描述符

對內核而言,所有打開文件都由文件描述符引用。文件描述符是一個非負整數

在linux中文件描述符的范圍是0~OPEN_MAX。

當打開一個現存文件或創建一個新文件時,內核向進程返回一個文件描述符。當寫一個文件時,用open或create返回的文件描述符標識該文件,將其作為參數傳送給read或write。

在POSIX應用程序中,整數0、1、2應被代換成符號常數:

STDIN_FILENO(標准輸入,默認是鍵盤) STDOUT_FILENO(標准輸出,默認是屏幕) STDERR_FILENO(標准錯誤輸出,默認是屏幕),這些內容通常定義在 </usr/include/unistd.h>中。

Linux中每個進程在創建時,都會打開三個文件,這三個文件就是stdin、stdout、stderr,他們對應的文件描述符為0、1、2。在默認情況下使用open()打開文件時,分配的是最小未用文件描述符。

3. Liunx文件I/O

文件I/O沒有緩沖

  不帶緩沖是指每個read和write都是調用內核中相應的系統調用。

  不帶緩沖的I/O函數不是ANSI C的組成部分,但是是POSIX和XPG3的組成部分。

文件I/O通過文件描述符來訪問文件

4. 常用文件I/O

可用的文件I/O函數很多,包括:打開文件,讀文件,寫文件等。大多數Linux文件I\O只需要用到5個函數:open,read,write,lseek以及close。

Copyright © Linux教程網 All Rights Reserved