好康道相報
※加入部落軌道,讓你的部落格有更多人知道 《按此加入》《使用心得
※欲轉貼本站文章者,只要註明出處及網址即可,不需我同意了,謝謝您的配合
※留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔
※痞客邦會自動將疑似廣告留言隱藏,因此若留言後看不到,可能是被系統自動隱藏了,由於我現在很久才會開一次網誌,有看到時我才會將非廣告留言解開,敬請見諒

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

接續第十一章的Process

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

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

12-01.gif

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

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

12-02.gif

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

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

12-03.gif

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

12-04.gif

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

12-05.gif

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

12-06.gif

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

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

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

12-07.gif

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

12-08.gif

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

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

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

12-09.gif

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

12-10.gif

===
ch 13 Pipes 管線
===

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

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

12-11.gif

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

12-12.gif

od -c popen1.c - 秀字元

12-13.gif

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

12-14.gif

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

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

創作者介紹

正因為活著

蕭雲 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • garbage!
  • 這裡不歡迎自介文

    蕭雲 於 2015/08/05 22:07 回覆

找更多相關文章與討論