竟然一個禮拜沒有寫網誌,我最近果然是太忙了=__=
這篇筆記也是拖了超過一個禮拜
原因是這次的課程內容越來越難,也越來越聽不懂
不知道該寫什麼才好...

接續第十一章的Process

‧pipeopen非最好方式,建議用dup

‧Makefile預設的編譯指令為cc
在Makefile中加一行CC = gcc可改用gcc編譯,聽說效果會比較好



‧system1、pexec老師上次已經講過了,不再重寫一遍

‧fork1
老師小改了裡面的程式碼為fork1a.c
多了顯示pid跟ppid數值
至於這有什麼用,老實說我忘了╮( ̄▽ ̄")╭



‧第二次作業可用exec,效果是運行某個Process並且不再返回
可輸入man exec查看關於他的說明

excelp的p代表path
excelv的v代表vector



‧pexec
因為不再返回,原本最後應該顯示done字樣沒有出來



如果把execlp改成execl,done就會出來了
因為那一行錯誤了......



老師將pexec修改,存成pexec1.c
分別是各種不同的execl的結果,請自行切換註解觀看
如下圖就是錯誤的畫面



想要顯示錯誤訊息的話,先#include <errno.h>
然後用變數errno顯示錯誤代碼,strerror(errno)顯示錯誤訊息

‧想知道某個系統指令放在哪裡的話,請打which
which ps就會顯示放在/bin/ps

‧wait
講了一堆有的沒的疆屍...



修改wait.c成wait1.c
在程式中間加上system("ps ef");
狀態會顯示Z+,代表這個process目前是疆屍狀態(Zombine)
等到父親結束,兒子才會真正結束
wait完再顯示ps ef,發現就沒有zombine了



如果在Xubuntu複製的東西無法貼到Windows的話
先在Windows隨便複製一個東西就可以了

‧upper
./upper < file.txt > aa - 將file.txt變大寫再輸出到aa

‧useupper
此程式其實只是把屬性傳到上面的upper這個程式而已
請自行參考程式碼



cat - >aaa - 將螢幕上輸入的字輸出到檔案中
-是標準輸入,cat -並不是開啟-這個檔案
而是可以在螢幕上打字輸入內容
缺點是不能回去修改上一行
結束輸入直接按Ctrl+C即可



===
ch 13 Pipes 管線
===

‧popen1
執行指令uname -a產生pipe,先把buffer清成0
將內容讀到read_fp,再用printf印出來

‧popen2
將寫出去的字串讓b程式去讀,此範例是呼叫od -c



od - 將檔案用八進位方式顯示
範例:od popen1.c



od -c popen1.c - 秀字元



xxd - 跟od類似,只是是以十六進位方式顯示
xxd -g 1 popen1.c - 以多少字元為一組
下圖就是每個字元都分開的樣子



也可以直接執行odxxd
在螢幕上打完字後,用Ctrl+D結束輸入
他會將你所打的字用八或十六進位顯示結果

第二次作業寫法跟pipe5類似,記得要參考

文章標籤
全站熱搜
創作者介紹
創作者 蕭雲 的頭像
蕭雲

正因為活著

蕭雲 發表在 痞客邦 留言(2) 人氣(2,709)