[英]How can I implement my own basic unix shell in C?
我是流程和線程管理的新手。 我的Shell應該了解PATH
環境變量。 它可以設置和修改。 它以兩種方式運行 - 交互式和批處理模式。 Shell能夠執行多個作業,如ls; ps; wc file; cal。 我也想弄清信號。 所以我也應該處理^ K,^ c。
我知道我將不得不使用高管,叉子和管道但是無法上手。
你的主循環是:
fgets(3)
對於一個簡單的shell使用readline(3)
) 要解析命令,有兩種常見的選擇。 編寫遞歸下降解析器或使用yacc(1)
生成一個。 使用yacc
初始解析器要容易yacc
,但是你完全可以調試它並且它真的想要無上下文。 我更喜歡遞歸下降,但世界上其他所有人都喜歡使用yacc。 (技術上, bison
。)如果外殼真的很簡單,就像一個作業外殼,yacc可能有點矯枉過正。
要進行詞法分析,您也可以自己動手或使用flex。
您不需要使用任何線程。
許多描述主系統調用的Unix書籍也實現了一個shell來說明如何以及為什么使用各種調用。 Stevens和Rochkind是兩本這樣的書:
W Richard Stevens,Stephen A Rago Unix環境中的高級編程,第3版
Marc J Rochkind 高級Unix編程,第二版
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.