<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    重定向和管道的實現

    Posted on 2008-02-29 11:16 dennis 閱讀(926) 評論(0)  編輯  收藏 所屬分類: linux & C
    重定向標準輸入的實現:
    1)close-then-open: close(0) ; fd=open("test",O_RDONLY); fd將是stdin。
    2)open-close-dup-close:
    fd=open(file),打開stdin將要重定向的文件;close(0);new_fd=dup(file);close(fd);new_fd就是被重定向的stdin
    3)open-dup2-close:
    fd=open(file);new_fd=dup2(fd,0);close(fd);

    重定向標準輸出的實現:
      父進程fork();子進程close(1);create("g",0644),此時子進程的stdout被重定向到g;接下來子進程exec某個程序,文件描述符屬于進程屬性,exec調用不會改變他們,那么運行的程序的標準輸出將被送到g,由此實現了標準輸出重定向。

    本質上重定向的實現是依賴兩個原則:
    1、標準輸入、標準輸出和標準錯誤分別是0、1和2
    2、最低可用描述符:打開文件時,為此文件安排的描述符總是進程內打開文件數組的最低可用位置的索引。

    管道:
      匿名管道:適合于有親緣關系的進程,通過pipe函數實現。
      有名管道:通過mkfifo函數實現,實現進程間的雙向通訊可以采用兩個有名管道實現,也可以采用socketpair調用。
    主站蜘蛛池模板: 亚洲人成色77777在线观看 | h视频在线观看免费完整版| 亚洲国产一区二区视频网站| 亚洲AV第一成肉网| 又粗又硬免费毛片| 特a级免费高清黄色片| 亚洲国产精品尤物yw在线| 国产黄色片免费看| 亚洲AV永久精品爱情岛论坛| 国产成人免费视频| 亚洲精彩视频在线观看| 免费无码A片一区二三区| 亚洲6080yy久久无码产自国产| 国产一区二区免费在线| 免费的黄色的网站| 亚洲五月午夜免费在线视频| 成人A毛片免费观看网站| 亚洲天堂中文字幕| 最近2019中文字幕mv免费看| 成a人片亚洲日本久久| 亚洲人成精品久久久久| 18级成人毛片免费观看| 亚洲av成人一区二区三区观看在线 | 免费又黄又硬又爽大片| 一个人看的www免费在线视频| 亚洲精品无码成人AAA片| 1000部羞羞禁止免费观看视频| 亚洲综合欧美色五月俺也去| 免费va人成视频网站全| 免费福利电影在线观看| 亚洲中文字幕在线无码一区二区| 永久黄网站色视频免费| 你懂得的在线观看免费视频| 中文字幕亚洲精品| 国产精品嫩草影院免费| 日韩免费电影网站| 国产AV无码专区亚洲AV麻豆丫| 亚洲精品国产精品乱码视色| 亚洲第一成年免费网站| 久久久精品国产亚洲成人满18免费网站 | 亚洲欧洲自拍拍偷午夜色无码|