<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調用。
    主站蜘蛛池模板: 免费99精品国产自在现线| 一级免费黄色大片| 久久久久av无码免费网| 日韩va亚洲va欧洲va国产| 成人无码视频97免费| 中文字幕亚洲综合久久菠萝蜜| 一级毛片试看60分钟免费播放| 国产精品亚洲综合专区片高清久久久 | 99精品热线在线观看免费视频| 亚洲VA成无码人在线观看天堂| 免费高清国产视频| 内射干少妇亚洲69XXX| 131美女爱做免费毛片| 亚洲免费人成视频观看| 成人黄动漫画免费网站视频 | 亚洲视频在线观看| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 亚洲国产精品一区二区久久| 一区二区三区免费视频播放器| 亚洲特级aaaaaa毛片| 亚洲熟妇丰满多毛XXXX| 亚洲国产一区视频| 国产免费小视频在线观看| 国产美女无遮挡免费视频 | 久久99亚洲网美利坚合众国 | 国产好大好硬好爽免费不卡| 久久久久久毛片免费看| sss在线观看免费高清| jizz免费在线观看| 一个人免费视频观看在线www| 精品成人免费自拍视频| 4399影视免费观看高清直播| 999国内精品永久免费视频| 好爽…又高潮了免费毛片| 免费一级肉体全黄毛片| 亚洲精品国产美女久久久| 亚洲网站在线播放| 亚洲精品无码av片| 国产精品偷伦视频观看免费 | 亚洲精品一卡2卡3卡四卡乱码| 老牛精品亚洲成av人片|