Linux拓展應用之重定向程式設計

2021-08-25 19:45:36 字數 1063 閱讀 5894

使用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 ...