檔案描述符fd和檔案指標fp之間的相互轉換
Linux/Unix下使用open函式(系統呼叫)開啟檔案會得到檔案描述符fd(int型變數),而使用C庫中的fopen函式開啟檔案則會得到檔案描述符fp(FILE*型變數),二者之間是可以相互轉換的,下面是兩個example。
1.fd轉換為fp
fileno()函式轉換成功返回檔案描述符fd,失敗時返回-1。int main(int argc, char *argv[]) { FILE *fp = NULL; fp = fopen("/home/super_bert/test.dat", "r"); /*得到檔案指標*/ if (fp == NULL) { perror("open file error."); exit(1); } else { printf("open file successfully...\n"); } int fd; fd = fileno(fp); /*檔案指標轉換為檔案描述符*/ if (-1 == fd) { perror("fp to fd error."); } else { printf("transform successfully...\n") exit(1); } return 0; }
2.fp轉換為fd
fdopen()轉換成功是返回指向該檔案的檔案指標,失敗返回NULL,錯誤程式碼在巨集errno中。int main(int argc, char *argv[]) { int fd; fd = open("/home/super_bert/test.dat", O_CREAT|O_RDWR, 0666); /*得到檔案描述符*/ if ( -1 == fd ) { perror("open file error."); exit(1); } else { printf("open file successfully...\n"); } FILE *fp = NULL; fp = fdopen(fd, "r"); /*檔案描述符轉換為檔案指標*/ if (NULL == fp) { perror("fd to fp error."); } else { printf("transform successfully...\n"); exit(1); } return 0; }
相關推薦
檔案描述符fd和檔案指標File* fp的區別和轉換
在linux系統中把裝置和普通檔案也都看做是檔案,要對檔案進行操作就必須先開啟檔案,開啟檔案後會得到一個檔案描述符,它是一個很小的正整數,是一個索引值。 核心會為每一個執行中的程序在程序控制塊pcb中維護一個開啟檔案的記錄表,每一個表項都有一個指標指
檔案描述符fd和檔案指標fp之間的相互轉換
Linux/Unix下使用open函式(系統呼叫)開啟檔案會得到檔案描述符fd(int型變數),而使用C庫中的fopen函式開啟檔案則會得到檔案描述符fp(FILE*型變數),二者之間是可以相互轉換的,下面是兩個example。 1.fd轉換為fp int
linux中檔案描述符fd和檔案指標flip的理解
整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html簡單歸納:fd(file descriptor)只是一個整數,在open時產生。起到一個索引的作用。每個程序在PCB(Process Control
Linux中檔案描述符fb和檔案指標FILE*的聯絡與區別
檔案描述符: linux中,當一個程序開啟一個檔案或者是建立一個新檔案時,核心向程序返回一個檔案描述符來標示該檔案。 檔案描述符是一個非負整數,實際上它是一個索引,指向核心為程序所維護的一個檔案記錄表。 任何程式執行起來都會開啟三個預設的流,標準輸入流,標準輸出流,標準錯誤流通
linux中檔案描述符fd和struct file結構體的釋放
簡單歸納:fd只是一個整數,在open時產生。起到一個索引的作用,程序通過PCB中的檔案描述符表找到該fd所指向的檔案指標filp。 檔案描述符的操作(如: open)返回的是一個檔案描述符,核心會在每個程序空間中維護一個檔案描述符表, 所有開啟的檔案都將通過此表中的檔
淺談 Linux 下的檔案描述符 fd fp
檔案描述符: 是個很小的正整數,它是一個索引值,指向核心為每一個程序所維護的該程序開啟檔案的記錄表。 當某個程式開啟檔案時,作業系統返回相應的檔案描述符,程式為了處理該檔案必須引用此描述符。所謂的檔案描述符是一個低階的正整數。最前面的三個檔案描述符(0,1
Linux中的檔案描述符(fd)與開啟檔案之間的關係
1. 概述 在Linux系統中一切皆可以看成是檔案,檔案又可分為:普通檔案、目錄檔案、連結檔案和裝置檔案。檔案描述符(file descriptor)是核心為了高效管理已被開啟的檔案所建立的索引,其是一個非負整數(通常是小整數),用於指代被開啟的檔案,所有執行I/O操作的系統呼叫都通過檔案描
淺談檔案描述符1和2
轉自:http://www.361way.com/filedesc-1-2/5536.html 在linux系統中, 我們知道有 標準輸入 , 標準輸出 , 和標準錯誤, 並且都分別對應著0, 1, 2這三個檔案描述符, 在每個程序誕生之際,就已經隨著伴隨左右,通過以下命令就能看出來:
Linux程式設計--檔案描述符fd
linux中, 每一個程序在核心中,都對應有一個“開啟檔案”陣列,存放指向檔案物件的指標,而 fd 是這個陣列的下標。 我們對檔案進行操作時,系統呼叫,將fd傳入核心,核心通過fd找到檔案,對檔案進行操作。 既然是陣列下標,fd的型別為int, &
Linux基礎IO--檔案描述符fd/重定向
在學習檔案描述符之前,我們先來看一點其它相關的知識點。我們都知道,對一個檔案我們可以進行開啟、讀、寫、關閉操作,在我們沒有接觸Linux之前,將資訊輸出到顯示器上,我們通常能想到的方法有以下幾種:#include<stdio.h> #include<stri
c++/c socket應用的區別:socket()函式返回檔案描述符fd總是0的問題
最近在arm linux系統上面使用socket建立客戶端到伺服器的連線, 客戶端需要開2個socket連線2個不同的伺服器, 這兩個申請socket的過程都放在同一個類的成員函式中實現, 測試發現,每次拿到的socket的fd均為0。 這個id為0,雖然用起來沒有問題,但
Unix環境程式設計之二:檔案描述符、開啟檔案表、v節點關係詳解
一、檔案描述符概念 Linux 系統中,把一切都看做是檔案,當程序開啟現有檔案或建立新檔案時,核心向程序返回一個檔案描述符,檔案描述符就是核心為了高效管理已被開啟的檔案所建立的索引,用來指向被開啟的檔案,所有執行I/O操作的系統呼叫都會通過檔案描述符。 二、檔案
每天進步一點點——Linux中的檔案描述符與開啟檔案之間的關係
在Linux系統中一切皆可以看成是檔案,檔案又可分為:普通檔案、目錄檔案、連結檔案和裝置檔案。檔案描述符(file descriptor)是核心為了高效管理已被開啟的檔案所建立的索引,其是一個非負整數(通常是小整數),用於指代被開啟的檔案,所有執行I/O操作的系統呼叫都通過檔案描述符。程式剛剛啟動的
js中字符串和json數組的相互轉換
pre json 就會 div scrip string json數組 互轉 obj //示例 var a={"name":"tom","sex":"男","age":"24"}; //向數據庫存儲時傳參數a時,直接這樣傳會存為object //json數組轉化為字
Linux:基礎IO(cIO庫函式詳細介紹)(IO系統呼叫介面詳細介紹)(兩者關係:檔案描述符和檔案指標)
目錄 c系統中的庫函式: fopen:開啟檔案 fclose:關閉檔案 fwrite:向檔案寫入一個數據塊 fread:讀寫 fprintf:格式化輸出到一個流/檔案中 fseek:移動/跳轉 到當前 讀取/寫入位置 fgets:獲取字串 fput:把字串寫入到指
Linux下 檔案描述符(fd)與 檔案指標(FILE*)
一、檔案描述符(fd) 我們都知道在Linux下一切皆檔案。當然裝置也不例外,如果要對某個裝置進行操作,就不得不開啟此裝置檔案,開啟檔案就會獲得該檔案的檔案描述符fd( file discriptor), 它就是一個很小的整數,每個程序在PCB(Process
簡析檔案描述符(fd)和FILE結構體的關係
檔案描述符(fd) 檔案描述符(file descriptor)用來訪問檔案。檔案描述符是非負整數。開啟現存檔案或新建檔案時,核心會返回一個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。 通常情況下,將一個程式從硬碟載入到記憶體後,這個程式就化
文件描述符fd、文件指針fp和vfork()
運行 color 調用exe urn 系統 通用 依賴 使用 src 1. fd:在形式上是一個非負整數.實際上他是一個索引值、指向kernal為每一個進程所維護的該進程打開文件的記錄表. 當程序打開一個文件或者創建一個新文件的時候kernal向進程返回一個文件
什麼是檔案描述符和檔案控制代碼?兩者是什麼關係?
在python裡面有這樣一個函式: 網上解釋什麼是,檔案描述符: 核心(kernel)利用檔案描述符來訪問檔案。檔案描述符是非負整數。開啟現存檔案或新建檔案時,核心會返回一個檔案描述符。讀寫檔案也 需要 檔案描述符來指定待讀寫的檔案。 乍一看,怎麼和檔案控制代碼的描述很想,網上搜了一下:
檔案描述符和開啟檔案
程序級的檔案描述符表 全域性系統級的開啟檔案表 檔案系統級的inode表 檔案描述符表中每一條目都記錄了單個檔案描述符的資訊 控制檔案描述符操作的標誌 close-on-exec 對開啟檔案控制代碼的引用 開啟檔案表中的