輸入重定向:將檔案匯入指定命令中
輸出重定向:將原本輸出開啟螢幕上資料資訊寫入到檔案當中
標準輸入重定向(stdin,檔案描述符為0):預設從鍵盤輸入,也可以從其他檔案或者命令中輸入
標準輸出重定向(stdout,檔案描述符為1):預設輸出到螢幕
標準輸出重定向符號
1「>」將標準輸出重定向到指定檔案中(清空原有資料)
2「>>」將標準輸出重定向到指定檔案中(追加到原有資料後面)
下面以》為例
1.首先用touch建立乙個空白資料夾readme.txt
2.用執行date>readme.txt 將原本應該顯示在螢幕上的內容寫入到readme.txt中
dup建立乙個檔案描述符的副本,但是新的fd(file descriptor)不可以被指定,預設為最小的沒有被使用的檔案描述符,dup2與dup相同可以建立乙個檔案描述符的副本,並且可以指定具體的檔案描述符。
dup與dup2的函式原型如下:
int
dup(
int oldfd)
;int
dup2
(int oldfd,
int newfd)
;
失敗返回-1
成功返回新fd
注意:dup和dup2建立的檔案描述符並不繼承原fd的屬性
案例:本案例將首先利用open函式開啟乙個檔案,然後利用dup2將stdout重定向到開啟的檔案,然後呼叫printf,這時printf列印的內容就會輸入到開啟的檔案當中。
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
int newfd=
dup2
(fd,stdout_fileno)
;//將檔案描述符stdout_fien重定向到fd中,這樣輸出到螢幕的內容就會寫入fd指向的檔案中
if(newfd==-1
)printf
("------輸入到螢幕------\n");
//原本應該是列印在螢幕上,但是現在執行程式不會顯示在螢幕上,而是寫入./duptest.txt這個檔案當中
close
(fd)
;return0;
}
從下圖可以看出執行上面**後螢幕上沒有任何輸出,但是我們檢視duptest.txt這個檔案,檔案的內容就是原本我們要輸出到螢幕上的內容。
使用dup,dup2重定向的試驗
想在bash修改版 中得到執行使用者輸入命令後的回顯資料,沒調通。管道中沒有資料,應該是找到的fd不對。bash 執行使用者輸入的命令後,具體命令回顯用的是重定向。重定向用linuxc實現時,用的是dup和dup2.從頭做個試驗,體會一下dup和dup2的效果。本來可以在sshd 中嘗試得到回顯,因...
輸入輸出重定向
使用標準輸入流,標準輸出流和標準錯誤流,這些標準流都被預分配給鍵盤和顯示器。在需要的時候,可以使用重定向臨時改變這些預設分配。重定向是這樣一種過程,我們借助它指定乙個用於替代某個 標準檔案的檔案。輸入重定向 可以將標準輸入從鍵盤重定向到任何文字檔案。輸入重定向運算子為小於號 意味著該命令從此給 派的...
輸入輸出重定向
1.標準輸入的控制 語法 命令 檔案將檔案做為命令的輸入。例如 mail s mail test wesongzhou hotmail.com file1 將檔案file1 當做信件的內容,主 題名稱為mail test,送給收信人。2.標準輸出的控制 語法 命令 檔案將命令的執行結果送至指定的檔案...