官术网_书友最值得收藏!

5.2 與終端進行對話

如果不希望程序中與用戶交互的部分被重定向,但允許其他的輸入和輸出被重定向,你就需要將與用戶交互的部分與stdout、stderr分離開。為此,你可直接對終端進行讀寫。由于Linux本身是多用戶系統,它通常擁有多個終端,這些終端或者是直接連接的,或者是通過網絡進行連接的,那么,你怎樣才能找到要使用的正確終端呢?

幸運的是,Linux和UNIX提供了一個特殊設備/dev/tty來解決這一問題,該設備始終是指向當前終端或當前的登錄會話。由于Linux把一切事物都看作為文件,所以你可以用一般文件的操作方式來對/dev/tty進行讀寫。

在下面的實驗中,你通過向getchoice函數傳遞參數的方法來加強對輸出的控制,修改后的程序為menu3.c。

實驗 使用/dev/tty

以menu2.c程序為藍本,對其做如下修改,使得輸入和輸出直接指向/dev/tty:

現在,當運行這個程序并將輸出進行重定向時,你仍然可以在終端上看到菜單提示信息,但程序的其他輸出(如表明菜單項已被選擇)則被重定向到文件中。

主站蜘蛛池模板: 本溪市| 林芝县| 嵊州市| 兰西县| 维西| 泸西县| 高台县| 兴文县| 微山县| 上饶县| 全椒县| 莱阳市| 榆中县| 堆龙德庆县| 临清市| 大港区| 泰和县| 周至县| 罗甸县| 乾安县| 杂多县| 荆州市| 古交市| 景德镇市| 迁安市| 临泽县| 崇信县| 永胜县| 利川市| 绥棱县| 特克斯县| 元江| 乐山市| 大庆市| 甘孜县| 获嘉县| 罗山县| 同心县| 梓潼县| 普格县| 定兴县|