ICS lab9 TinyShell 的10條建議

2021-06-19 08:18:58 字數 807 閱讀 5732

0.仔細看pdf,尤其是hint部分。

1.先抄書上的**,然後再新增書上沒有的功能。做到一定程度後,測試已有的功能,要不然不好改正。注意規範輸出格式。

2.wnohang,這個不用說了。

3.呼叫deletejob和更改state都應改放進sigchld_handler中,sigint和sigtstp的handler應該僅僅捕獲訊號並傳給前台的程序組。

4.waitpid也應該只在sigchld_handler中出現,而且必須僅僅出現一次。waitfg中不應該呼叫waitpid,否則會和sigchld_handler產生**競爭。

5.傳送sigint,sigtstp,以及sigcont訊號時要注意,傳進-pid而不是pid,以便傳送給整個程序組。否則trace11,12,13會有麻煩。子程序fork之後execve之前,注意要setgpid(0, 0)。

6.由於你的sigchld_handler要處理stop的程序,所以要加上wuntraced。然後迴圈裡要分情況判斷wifexited,wifsignaled,wifstopped。這三個函式會特別有用。

7.fg程序最多只有乙個,所以一旦產生就必須呼叫waitfg,do_bgfg函式裡也是。

8.一定要注意使用sigprocmask,pdf中也寫了。由於addjob在eval中呼叫,deletejob在sigchld_handler中呼叫,很可能出現add之前就delete的情況。所以要在fork之前呼叫sigprocmask,遮蔽掉sigchld訊號,然後add之後再解除。由於子程序也遮蔽掉了這個訊號,所以要在fork之後execve之前解除掉。

9.waitfg的迴圈裡注意呼叫sleep。

oracle9i匯出oracle 10g的大字段

oracle9i匯出oracle 10g的大字段 錯誤現象 用9i的exp匯出時錯誤如下 f oracle bin exp wssw foresee cradle203 file d sb sbxx zb.dmp tables sb sbxx zb export release 9.2.0.1.0 ...

Oracle 9i 10g 預設的使用者和密碼

sys change on install system manager sysman oem temp scott tiger aqadm aqadm dbsnmp dbsnmp 使用者名稱 口令 登入身份及說明 sys change on install sysdba或sysoper,但不能以n...

10個朋友9個吹的Filecoin,真就那麼厲害?

要說在幣圈最近什麼最火,那可能就是filecoin莫屬了,隨著主網上線的臨近,各大機構 交易所 大佬 礦工跟打了雞血一樣玩命推ipfs,甚至某大佬已經喊出了fil百倍,那麼今天我們來看一看被吹得神乎其神的filecoin究竟是那一路神仙。去中心化儲存 自誕生以來,一直都是大家關注的熱點。它的願景也非...