/*ex5-14.c*/
#include
#include
#include
#define maxarg 10 //每條命令所能使用的最大引數個數
#define linsiz 80 //每條命令的字元快取陣列
#define cmdsiz 8 //一次提交的最多的命令個數
extern
char **environ;
char *quit="quit.quit";
char cmdbuf[cmdsiz][linsiz]; //二維陣列cmdbuf存放從標準輸入讀到的命令串
int cmdflag[cmdsiz]; //陣列cmdflag決定該命令以何種方式執行(0為前台,1為後台)
int main()
if(i=readcmd()) //readcmd作用是將使用者輸入的命令字串解碼到已定義的外部變數cmdbuf二維陣列中
docommand(i); //執行存放在cmdbuf中的命令
else
printf("read command failed, try again!!!\n");
}}readcmd() //將使用者從標準輸入提交的一行命令,按分號為界,分別存入命令緩衝區cmdbuf中
else
if(c=='&')
else
*p++=c;
}*p='\0'; //每次命令提交時,該陣列欄位被清為零
return(++i); //返回該次使用者提交的命令個數
}docommand(int i)
*arglp++=argsp;
while(c!=' '&&c!='\t'&&c!='\0')
*argsp++='\0';
}*arglp=(char *)0;
if(strcmp(argl[0], quit)==0)
if((pid=fork())==0)
else
}}
Linux C程式設計例項
這是本人曾經寫過的 linux c 語言的例項。其中每個例項都是本人編譯通過,並且執行測試過的,所有的都是乙個完整的例項,幾乎沒有錯誤。因為例項還比較齊全,所以分享給大家,希望對於剛開始學 linux c 語言而又苦於例項練習少 動手程式設計能力差的人有所幫助。注意 所有linux c 語言的博文沒...
Linux C程序 執行緒
1 程序間通訊 庫 在使用者空間是不可能實現程序通訊,可通過linux核心建立物件來通訊 pid t pid 程序號的型別定義 pid fork 建立程序 if pid 0 子程序 if pid 1 父程序 2 執行緒間通訊 庫 在使用者空間可以實現執行緒間通訊,通過全域性變數通訊 pthread ...
linux c 程序學習
1.fork 由於fork後的父程序與子程序的優先順序是一樣的,所以會存在父程序已經退出了而子程序還在執行,這時候的子程序就是孤兒程序,會被init程序收養,所以這時候getppid得到的1。int main exit 0 2.vfork 由vfork也是用來建立程序,但是子程序是共享父程序的位址空...