自己實現popen函數

   閒來無事,自己實現了popen函數mypopen,後來查看了popen函數的源碼發現自己實現的與其相差無幾,本函數與linux中的實現最大的不同是不需要用專門的pclose()函數來關閉文件指針,用普通的fclose()即可,linux實現的代碼也會給出在下文,可以對比一下其中差異。

 

   主要通過pipe管道實現,具體思路如下:

        1、使用pipe()建立管道

        2、使用fork()創建子進程

        3、在子進程中調用exec族函數執行命令,通過管道將結果傳送至父進程

        4、在主進程中等待子進程執行,子進程執行完成後將接收其結果,返回結果的文件指針

 

  下面是mypopen源代碼,重點部位已通過註釋進行標註:

     

 

 

   下面是popen()在linux中的實現:

    

 

    參考資料,真誠致謝:

   http://www.linuxforum.net/forum/showflat.php?Cat=&Board=program&Number=266385 

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章