Linux下C語言實現簡單Shell

2021-06-08 06:42:00 字數 1125 閱讀 5165

#include

#include

#include

#include

#include

#include

#include

#include

#define max_string 256

#define signin "<"

#define signout ">"

#define signpine "|"

const char* expst = "exit";  //控制終端輸入exit,shell退出

int strtoken(char* buf,char** p)  //以空格符為標準分割字串,字串頭指標儲存在指標陣列p中

p[i-1] = null; //重點:在linux終端輸入字串是以『\n』結束的,比如ls -l後回車,則三個字串分別為ls\0,-l\0,\n\0

return (i-1);     //p[i-1] = null 的目的就是消除字串\n\0,為exeve的呼叫提供結尾引數null

}int strprotok(char* buf, char** p)

return i;

}void inorout(int i, char** p)  //以'<','>'分別判斷進而重定向

void performpro(char* buf,char** p)

int main(void)

err = pipe(ppine);

if(err < 0)

pidchil = fork();

if(pidchil < 0)

if(pidchil == 0)

if(pidchil > 0)

if(piddaug == 0)

if(piddaug > 0)}}

else  

if(pid == 0)

if(pid > 0)}}

}linux下的基本命令都可以實現,缺點是在實現管道命令「|」時,父程序fork出兩個子女程序,雖然屬於同乙個session,但父程序是前台程序,子女程序是後台程序,這就使兩個程序間管道通訊時,父程序已結束,輸出了「@」提示符,而子女程序在之後才能結束。

剛學linux c沒多久,不過感覺真的很有意思~

Linux下C語言實現簡單的udp通訊

用c語言實現udp 通訊。寫乙個udp 的客戶端,可以向外傳送訊息。再寫乙個udp服務端,接收客戶端的訊息,並且列印出來。事先說明 在window和linux中有一下結構 struct sockaddr struct sockaddr in 在netinet in.h 中定義 儲存ip位址,使用in...

用C語言實現乙個簡單的Linux殼層(Shell)

期末考試考完,進入聖誕假期,終於騰出手寫這篇文章了。這是我們os課的第乙份作業,要求實現乙個簡單的linux shell,用c寫出乙個類似terminal的東西。大致要求 可以迴圈接收command,根據內容實現相應動作,實現幾個常見command即可。作業目的是熟悉幾個知識點 linux的pare...

Linux下C語言實現CopyFile

linux下c語言實現檔案拷貝 function copy file from file1 to file2 how to execute copyfile file1 file2 under linux data 2007 05 09 include fprintf stderr,bufsiz i...