編寫乙個簡易shell,需要迴圈以下流程:
獲取命令列
解析命令列
建立乙個子程序(fork)
替換子程序(execvp)
父程序等待子程序退出(wait)
**實現:
運用程序中程序的建立,等待,替換知識完成。。。#include
#include
#include
#include
#include
#include
intmain()
;fgets
(buf,
1024
,stdin);
//從標準輸入讀取資料
//將最後的換行符修改為字串結尾標誌
buf[
strlen
(buf)-1
]='\0'
;printf
("cmd:[%s]\n"
, buf)
;//[ ls -a -l ]
char
*ptr = buf;
char
*ar**[32]
=;int argc =0;
while
(*ptr !=
'\0'
) ptr++;}
ar**[argc]
=null
;//最後乙個引數以null結尾
for(
int i =
0; i < argc; i++
)//不是直接對shell進行程式替換,因為替換後就沒有shell
pid_t pid =
fork()
;if(pid ==0)
waitpid
(pid,
null,0
);//阻塞等待子程序命令執行完畢
}return0;
}
簡易shell的實現
自主minishell實現 1 獲取標準輸入 2 解析輸入得到 命令名 執行引數 3 建立子程序 子程序中進行程式替換 4 程序等待 include include include include include intmain printf uesr localhost fflush stdout...
Shell,我的簡易實現!
基礎知識 shell 是一種基本的使用者操作介面,通過對使用者輸入命令的解析完成相應的功能。shell 程式的執行包括 列印提示符 獲取命令列 解析命令 搜尋相應命令檔案 準備引數 執行命令 後台執行的程序 一般執行命令的時候,fork 乙個子程序去執行命令,父程序等待子程序完成任務。但是後台程序執...
用fock實現簡易shell(程式替換)
fork之後就會建立則程序,資料 堆 棧有兩份,仍然為乙份但是這個 段成為兩個程序的共享 段都從fork函式中返回,當父子程序有乙個想要修改資料或者堆疊時,兩個進 正 子程序在建立的時候會複製父程序的 不管是共用 還是複製 這就相當於父程序建立了乙個和自己功能完全相同的程序,這樣一來,子程序就只能進...