使用dup()及dup2函式可以實現linux的標準輸入輸出重定向功能。原理很簡單,即關閉標準的輸入輸出裝置(0、1、2),開啟或複製某普通檔案,並使其檔案描述符為0、1、2。
dup()及dup2()函式宣告如下:
// from /usr/include/unistd.h
int dup(int fd);
int dup2(int fd,int fd2);
其中dup()就是將已開啟的檔案描述符fd,重新尋找乙個最小的非負的檔案描述符,它將與這個尋找到的檔案描述符共享乙個檔案表項(擁有相同的檔案許可權、讀寫位置等),所以在呼叫dup重定向時,需要先將想重定向的檔案描述符關閉。例如以下簡單實現標準輸出重定向到檔案test.txt的功能**:
#include #include #include int main()
執行結果如下:
可以看出重定向之前,標準輸出是顯示在終端上的,重定向之後的列印全部重定向到檔案上了,且原先的檔案描述符並沒有變化,只是修改了標準輸出的檔案指標指向,dup()的返回值為尋找到的最小檔案描述符。
而dup2()函式的作用與dup()相同,使用上也基本一樣,但dup2()可以指定重定向的檔案描述符,且不用關閉它,將上面**做乙個簡單修改,即可實現。
#include #include #include int main()
執行結果如下:
可以看到,和上面dup()執行的結果一樣。
Linux拓展應用之ping功能實現詳解
define max wait time 5 接收超時5秒 define max no packets 3 char sendpacket packet size char recvpacket packet size int sockfd,datalen 56 int nsend 0,nrecei...
linux重定向命令應用及語法
linux重定向命令應用及語法 2008 01 26 14 08 分類 linux技術 1.標準輸入的控制 語法 命令 檔案將檔案做為命令的輸入。例如 mail s mail test das 163.com file1 將檔案file1 當做信件的內容,主 題名稱為mail test,送給收信人。...
linux重定向命令應用及語法
1.標準輸入的控制 語法 命令 檔案將命令的執行結果送至指定的檔案中。例如 ls l list 將執行 ls l 命令的結果寫入檔案list 中。語法 命令 檔案將命令的執行結果送至指定的檔案中,若檔案已經存在,則覆蓋。例如 ls lg list 將執行 ls lg 命令的結果覆蓋寫入檔案list ...