[英]Implementing a subshell in c
我已經用C語言實現了像shell這樣的bash。 我支持<
>
>>
;
|
和&
。 我的下一個任務是添加對(
和)
基本上是子外殼的支持。 我們如何實現子外殼。 我可以分叉並讓父級等待,傳遞環境變量,但我需要為(ls | sort) ; ls
等命令添加支持(ls | sort) ; ls
(ls | sort) ; ls
(我承認該命令沒有多大意義,但可以解釋其動機)
任何幫助表示贊賞。
為了實現這一點,我們解析命令行並創建樹狀結構。 這可以在lex
和yacc
的幫助下完成,並且正如barmer建議的那樣,我們可以將每個節點命名為subshell
pipeline
semicolon
。 解析完整個命令行后,將指向整個節點的指針傳遞給主程序。 要運行一個子shell fork
,然后使用execve
傳遞當前環境來重新加載相同的程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.