建立乙個屬於自己的shell

2021-08-28 07:07:51 字數 1514 閱讀 7364

1 /*寫乙個屬於自己的微型myshell

2 * 功能:myshell>ls

3 * 能夠執行基礎linux 命令

4 *

5 */

6 #include7 #include8 #include9 #include10 #include11 //1、獲取終端輸入

12 //2、解析輸入(按空格解析到乙個乙個的命令引數)

13 //3、建立乙個子程序

14 // 在子程序中進行程式替換,讓子程序執行命令

15 //4、等待子程序執行完畢,收屍,獲取狀態退出碼

16 int argc;

17 char *argv[32];

18 int param_parse(char *buff)

35 ptr++;

36 }

37 argv[argc++]=tmp;

38 argv[argc]=null;

39 }

40 41 int exec_cmd()

42 else if(pid==0)

50

54 //父程序在這裡必須等待子程序退出,來看看子程序為什麼會退出了

55 //是不是出現了什麼錯誤,通過獲取狀態碼,並且轉換以下退出碼所對應的錯誤資訊進行列印

56 int statu;

57 wait(&statu);

58 //判斷子程序是否是**執行完畢退出

59 if(wifexited(statu))

63 }

64 65 int main()

66 ;

70 //%[^\n] 獲取資料直到遇到\n為止

71 //%*c 清空快取區,資料不要了。

72 scanf("%[^\n]%*c",buff);

73 printf("%s\n",buff);

74 param_parse(buff);

75 exec_cmd();

76 }

77 78 return 0;

79 80

來看看執行結果

之前在[long@localhost]程序下執行命令,當實現了自己的shell後,在myshell程序下執行命令,此時linux預設的程序將成為bash後台子程式

./myshell 的父程序ppid為2543,此時2543對應的程序是bash,所以之前的shell被轉化為後台程序,myshell成為了當前執行的程序。

當前執行的程式為前台程序,前台程序只能有乙個,而後台程序可以有多個,當結束了前台程序,後台程序會有乙個程序來作為前台程序。

如何建立屬於自己的乙個論壇

最近突然興起,想建立乙個屬於自己的論壇。剛開始打算自己寫乙個,然後發現,工作量太大。希望能找到乙個原始碼,直接使用即可。找了許多基於ssh的框架的原始碼,但是最後發現都不行,都是各種demo,各種缺功能,需要自己去完善。後面,找到乙個php的框架原始碼,叫discuz,還不錯,可惜了,是php寫的。...

乙個只屬於他自己的故事

當感情來的迅猛時,誰也無法阻擋,誰都只是想珍惜這種感覺!畢竟這種感覺讓人覺得是那麼的甜蜜而又苦澀 聽過乙個傳說,如果心裡裝著想念的人,就可以在滿月中看到那個人的臉。那晚他想念她了,他就傻傻地往窗外看,可是連個月牙都沒有,唯有的是那孤立於凜冽寒風中的路燈。他想看月亮,他想知道當他想她的時候,她在做什麼...

構建乙個屬於你自己的映象

我們將通過docker whalesay這個映象來構建乙個屬於自己的映象。第一步 建立乙個dockerfile檔案 1.切換到命令終端。2.使用命令mkdir mydockerbuild 穿件乙個名為mydockerbuild的資料夾。mkdir mydockerbuild3.切換到新建立的資料夾。...