常用的重定向如who->userlist.txt將who的輸出定向到檔案userlist.txt,這是如何做到的呢?
who的預設輸出物件是標準io中的stdout,檔案描述符為1,而重定向所做的事情是將檔案描述符1從預設的tty裝置檔案移開,而重新分配給其他檔案,在本例中為userlist.txt,這樣who在向檔案描述符1輸出使用者清單時就會輸出到userlist.txt中。
同理,對於輸入資料的重定向sort重定向到檔案的小結:
(1)標準輸入、輸出、錯誤分別對應於檔案描述符0、1、2;
(2)核心總是使用最低可用檔案描述符;
(3)檔案描述符集合通過exec呼叫傳遞,且不會改變。
shell的重定向功能是通過在fork和exec中間重定向標準輸入、輸出、錯誤來實現,如下面例程所示。
實際上使用管道的who | sort的也是一種重定向,只不過不是重定向到檔案,而是重定向到另乙個程序,這樣就可以實現程序間的互動,這是通過將程序的輸入輸出重定向到管道來實現的。另外,socket的原理其實和管道很相似。
/*whotofile.c - fork a child, redirect stdout to file then execute who
*/#include
#include
#include
#include
intmain()
else
return0;
}
使用dup2的方法實現重定向:
/*stdinredir3.c - redirect stdin to file by "open-dup2-close"
*/#include
#include
#include
intmain()
chapter10使用Using機制
使用using機制 1.操作硬碟,就需要try.catch 2.為了簡化try.catch的機制,使用using 3.凡是使用了using 自動釋放資源的地方,必須實現idisposable介面 源 使用using自動釋放資源,不用再寫fs.close using system using syst...
chapter 10 迴圈網路架構
語言模型是rnn常關注的乙個問題,我們希望能讓演算法能夠在我們給出乙個首字元的情況下,給出後面的字元的 在我看來,這不僅可以用於搜尋引擎,在考慮了語境後,或許也可以用來寫文章或繪畫。以下是rnn的幾個例項 我們可以使用莎士比亞的文集來訓練演算法,來得到習得了莎翁文風的演算法。將一大堆代數托補學教材的...
Chapter10 泛型演算法
泛型演算法的基礎是迭代器。迭代器令演算法不依賴於容器,但是演算法依賴於元素型別的操作。也即 演算法永遠不會執行容器的操作。那麼,如果想向容器中新增元素或者執行其他的一些操作呢?標準庫提供了插入迭代器來完成。但演算法自身永遠不會做這樣的操作。唯讀演算法 1 int sum accumulate vec...