模拟实现ps aux | grep xxx
模擬實(shí)現(xiàn)ps aux | grep xxx使用管道通信的功能
思路:子進(jìn)程中執(zhí)行ps aux,通過(guò)匿名管道通信傳輸給父進(jìn)程,父進(jìn)程中輸出內(nèi)容即可
整體代碼:
pipe1.c:
作業(yè)說(shuō)明:
編譯指令:gcc pipe1.c
運(yùn)行指令:./a.out XXX (XXX不可少)
XXX可以是bash nginx等等
例如:
下面記錄一下我遇到的問(wèn)題:
1.管道的重定向,根據(jù)老師的提醒,我將子進(jìn)程的[標(biāo)準(zhǔn)屏幕輸出(寫(xiě)到屏幕上)STDOUT_FILEON] 指向[pipepf[1](寫(xiě)到管道里)],如圖:
但父進(jìn)程依然按照老師的示例read以及printf,發(fā)現(xiàn)read:bad read報(bào)錯(cuò)終止,如下:
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);}
后來(lái)想到將[標(biāo)準(zhǔn)讀入(從鍵盤(pán)讀入)]指向[從管道讀入],問(wèn)題方才解決,即:
2.子進(jìn)程中執(zhí)行ps aux,通過(guò)匿名管道通信傳輸給父進(jìn)程,父進(jìn)程中執(zhí)行g(shù)rep XXX,且輸出內(nèi)容,或者父進(jìn)程生成兩個(gè)子進(jìn)程一個(gè)子進(jìn)程執(zhí)行ps aux,另一個(gè)子進(jìn)程執(zhí)行g(shù)rep XXX,父進(jìn)程可以回收子進(jìn)程,這個(gè)已有其他的朋友寫(xiě)過(guò),可參考,下面放鏈接:https://blog.csdn.net/zxy131072/article/details/89515930
總結(jié)
以上是生活随笔為你收集整理的模拟实现ps aux | grep xxx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 海底塌陷洼地的特征
- 下一篇: Microsoft word 中的题注修