dup和dup2檔案描述符相關函式
#include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int fd, save_fd; char msg[] = "This is a test\n"; fd = open("somefile", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); if(fd<0) { perror("open"); exit(1); } save_fd = dup(STDOUT_FILENO); dup2(fd, STDOUT_FILENO); close(fd); write(STDOUT_FILENO, msg, strlen(msg)); dup2(save_fd, STDOUT_FILENO); write(STDOUT_FILENO, msg, strlen(msg)); close(save_fd); return 0; }
相關推薦
dup和dup2檔案描述符相關函式
#include <unistd.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
檔案描述符複製函式dup2()詳解
dup2()是dup()的“升級版“,原型是int dup2(int oldfd, int newfd),作用是讓檔案描述符newfd與oldfd所關聯的檔案(或緩衝區或管道或共享記憶體等)關聯起來,如果一開始newfd已經和某個檔案關聯了(一個描述符同一時刻只能關聯一個檔案
檔案描述符——select()函式以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
舉個例子,比如recv(), 在沒有資料到來呼叫它的時候,你的執行緒將被阻塞,如果資料一直不來,你的執行緒就要阻塞很久.這樣顯然不好。所以採用select來檢視套節字是否可讀(也就是是否有資料讀了) 。 步驟如下——socket s; ..... fd_set set; while(1) { FD_ZERO
linux—dup和dup2重定向檔案描述符
【dup】 利用函式dup,我們可以複製一個描述符。傳給該函式一個既有的描述符,它就會返回一 個新的現有的最小的未被使用的描述符,這個新的描述符是傳給它的描述符的拷貝。這意味著,這兩個描述符共享同一
Linux:基礎IO(cIO庫函式詳細介紹)(IO系統呼叫介面詳細介紹)(兩者關係:檔案描述符和檔案指標)
目錄 c系統中的庫函式: fopen:開啟檔案 fclose:關閉檔案 fwrite:向檔案寫入一個數據塊 fread:讀寫 fprintf:格式化輸出到一個流/檔案中 fseek:移動/跳轉 到當前 讀取/寫入位置 fgets:獲取字串 fput:把字串寫入到指
Linux 檔案描述符(file descriptor, fd)以及檔案描述符操作dup(), dup2()
1.概述 在Linux系統中,一切皆可以看做是“檔案”,這裡“檔案”包括普通檔案、目錄檔案、連結檔案和裝置檔案等。而檔案描述符(file descriptor, 簡稱fd)是Linux核心所建立的索引,其目的為了高效管理已被開啟的“檔案”。其實,檔案描述符就是一個非負整數(
linux dup,dup2,dup3 複製一個檔案描述符
dup,dup2,dup3 --duplicate a file descriptor複製一個檔案描述符 大綱 #include <unistd.h> int dup(int oldfd); int dup2(int oldfd , int new
檔案描述符的重定向:dup/dup2
dup/dup2:進行檔案描述符的重定向即建立一個oldfd的副本。 dup:最低編號、未被使用的檔案描述符是oldfd的一份拷貝。 dup2:newfd是oldfd的一份拷貝。 返回值:成功(newfd); 失敗(-1)。 基於TCP的soc
dup和dup2函式的小理解
int dup(int fd); int dup2(int fd, int fd 2); dup的引數是一個檔案描述符,指向一個檔案(stdin,stdout等也是特殊的檔案)。返回的也是一個檔案描述符(當前還未被使用的最小的描述符編號),這個描述符和fd指向同一個檔案。也就
什麼是檔案描述符和檔案控制代碼?兩者是什麼關係?
在python裡面有這樣一個函式: 網上解釋什麼是,檔案描述符: 核心(kernel)利用檔案描述符來訪問檔案。檔案描述符是非負整數。開啟現存檔案或新建檔案時,核心會返回一個檔案描述符。讀寫檔案也 需要 檔案描述符來指定待讀寫的檔案。 乍一看,怎麼和檔案控制代碼的描述很想,網上搜了一下:
dup和dup2函式簡單使用
dup函式 標頭檔案和函式原型: #include <unistd.h> int dup(int oldfd); dup函式是用來開啟一個新的檔案描述符,指向和oldfd同一個檔案,共享檔案偏移量和檔案狀態。 共享偏移量程式碼: int main(int argc, char const
Linux中檔案描述符fb和檔案指標FILE*的聯絡與區別
檔案描述符: linux中,當一個程序開啟一個檔案或者是建立一個新檔案時,核心向程序返回一個檔案描述符來標示該檔案。 檔案描述符是一個非負整數,實際上它是一個索引,指向核心為程序所維護的一個檔案記錄表。 任何程式執行起來都會開啟三個預設的流,標準輸入流,標準輸出流,標準錯誤流通
Linux下select函式檔案描述符0狀態的問題
當然是在有輸入或者輸出時檔案描述符的讀寫狀態改變咯,比如標準輸入的檔案描述符是0,如果用select來等待0號檔案描述符,那麼當在鍵盤上敲字元時開始,就是檔案描述符的讀寫狀態改變之時,這時select函式就會返回;對於套接字描述符來說也是這樣,用select來等待一個伺服器描
檔案描述符和開啟檔案
程序級的檔案描述符表 全域性系統級的開啟檔案表 檔案系統級的inode表 檔案描述符表中每一條目都記錄了單個檔案描述符的資訊 控制檔案描述符操作的標誌 close-on-exec 對開啟檔案控制代碼的引用 開啟檔案表中的
函式dup和dup2
函式原型: #include<unistd.h> int dup(int oldfd); 返回值:若成功,返回新的檔案描述符;若出錯,返回-1
深入理解Linux/Unix檔案描述符和epoll
Linux/Unix 檔案描述符(File Describer)的本質 Linux/Unix(以下簡稱Linux)系統中,每個程序都有一個專用的陣列,陣列的元素是一個結構體,稱為檔案描述符File Descriptor(以下簡稱fd),但是至少包含一個檔案指標,指向Linux核心的O
淺析dup()和dup2()函式
前言 在linux下,一切皆檔案。當檔案被開啟時,會返回檔案描述符用於操作該檔案,從shell中執行一個程序,預設會有3個檔案描述符存在(0、1、2);)0表示標準輸入,1表示標準輸出,2表示標準錯誤。一個程序當前有哪些開啟的檔案描述符可以通過/proc/
檔案描述符fd和檔案指標File* fp的區別和轉換
在linux系統中把裝置和普通檔案也都看做是檔案,要對檔案進行操作就必須先開啟檔案,開啟檔案後會得到一個檔案描述符,它是一個很小的正整數,是一個索引值。 核心會為每一個執行中的程序在程序控制塊pcb中維護一個開啟檔案的記錄表,每一個表項都有一個指標指
淺談檔案描述符1和2
轉自:http://www.361way.com/filedesc-1-2/5536.html 在linux系統中, 我們知道有 標準輸入 , 標準輸出 , 和標準錯誤, 並且都分別對應著0, 1, 2這三個檔案描述符, 在每個程序誕生之際,就已經隨著伴隨左右,通過以下命令就能看出來:
linux之dup和dup2函式解析
系統呼叫dup和dup2能夠複製檔案描述符。dup返回新的檔案檔案描述符(沒有用的檔案描述符最小的編號)。dup2可以讓使用者指定返回的檔案描述符的值,如果需要,則首先接近newfd的值,他通常用來重新開啟或者重定向一個檔案描述符。 在linux下,通過open開啟以檔案後