模拟实现ps aux | grep xxx
生活随笔
收集整理的這篇文章主要介紹了
模拟实现ps aux | grep xxx
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模擬實現ps aux | grep xxx使用管道通信的功能
思路:子進程中執行ps aux,通過匿名管道通信傳輸給父進程,父進程中輸出內容即可
整體代碼:
pipe1.c:
作業說明:
編譯指令:gcc pipe1.c
運行指令:./a.out XXX (XXX不可少)
XXX可以是bash nginx等等
例如:
下面記錄一下我遇到的問題:
1.管道的重定向,根據老師的提醒,我將子進程的[標準屏幕輸出(寫到屏幕上)STDOUT_FILEON] 指向[pipepf[1](寫到管道里)],如圖:
但父進程依然按照老師的示例read以及printf,發現read:bad read報錯終止,如下:
while (1){char buf[1024]={0};int retp= read(pipefd[0],buf,strlen(buf)-1);if(retp ==-1){perror("read:");exit(-1);}printf("%s",buf);}
后來想到將[標準讀入(從鍵盤讀入)]指向[從管道讀入],問題方才解決,即:
2.子進程中執行ps aux,通過匿名管道通信傳輸給父進程,父進程中執行grep XXX,且輸出內容,或者父進程生成兩個子進程一個子進程執行ps aux,另一個子進程執行grep XXX,父進程可以回收子進程,這個已有其他的朋友寫過,可參考,下面放鏈接:https://blog.csdn.net/zxy131072/article/details/89515930
總結
以上是生活随笔為你收集整理的模拟实现ps aux | grep xxx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海底塌陷洼地的特征
- 下一篇: Microsoft word 中的题注修