利用程序控制開發乙個簡單的minishell程式

2021-09-22 14:12:37 字數 1431 閱讀 9193

步驟:

列印提示符,並且讓使用者輸入乙個指令

解析輸入的指令,找到相應的可執行程式

建立子程序,子程序進行程式替換,來載入可執行程式

父程序進行程式等待,等待子程序結束

子程序結束,父程序從等待中返回,迴圈執行 1 

//minishell

#include#include#include#include#include#include#include//自己封裝的命令

//input 表示等待切分命令

//output 表示切分結果

//返回值 表示output中包含幾個有效元素

int split(char input, char* output)

output[i] = null;//這個操作很容易忘記的

return i;

}//ls -l /

//ar**[0] —>ls

//ar**[1] —>ls -l

//ar**[2] —> /

void creatprocess(char* ar**, int n)

else if (ret == 0)

}else

}int main();

scanf("%s", command); //有問題

//換gets

gets(command); //一次讀取一行

//這句是測試scanf 能否掃瞄整行資料

printf("%s\n", command);

//會發現遇到空格就不行,有問題 例如:ls -l 就有問題

//3.解析指令,把我們要執行的哪個程式識別出來,那些是命令列引數識別出來

//方法是:按照空格字串切分。切分結果是字串陣列

char ar**[1024] = ;

//std::vectorar**;

int n = split(command, &ar**);

//4.建立子程序,進行程式替換

creatprocess(ar**,n);

} system("pause");

return 0;

}

minishell的改進:自動獲取使用者名稱,主機名,當前路徑。

需要支援 cd 命令(cd 修改的子程序的路徑,對父程序不影響)。注:需要讓父程序直接支援 cd,而不是建立子程序/程式替換,cd是內建命令。

支援定義一些命令的別名。(需要在程式中維護鍵值對這樣的資料結構,std::map

支援管道

支援重定向

乙個程序控制多個socket

module test tcp compile export all include lib kernel include inet.hrl define tcp options,binary,test pid spawn link module,loop,gen tcp listen 6099,t...

利用流套接字實現乙個簡單的遠端控制系統

實驗要求 客戶端輸入 quit 客戶端程式與伺服器端程式列印退出資訊,終止程式的執行 客戶輸入命令,客戶端將命令通過流套接字傳送給客戶端,伺服器執行收到的命令,並將結果傳送到客戶端顯示 如果沒有客戶輸入的命令,伺服器傳送命令非法資訊,並在客戶端顯示該條資訊 伺服器端可以接收客戶端多次連線,能夠處理客...

乙個利用CAN實現車輛控制的簡單模板

整理一下研究生第一年學到的東西,因為研究方向是和無人車相關,最先學習的就是can匯流排的相關知識了,這裡簡單地po乙個筆者利用c c 寫的乙個can的使用模板。can的全稱是controller area network是一種車內常用的通訊協議,網路的裝置直接互聯通訊。1 基本上,現在很多車都是使用...