#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#define MAXLINE 1024
int main()
{
char buf[MAXLINE];
pid_t pid;
int status;
int status;
printf("%%");
while(fgets(buf,MAXLINE,stdin)!=NULL){//獲取字符串
if(buf[strlen(buf)-1]=='\n'){
buf[strlen(buf)-1]=0;
}
//我們稱調用進程爲父進程,新創建的進程爲子進程,fork對父進程
//返回新的子進程的進程ID,對子進程返回的是0
if((pid=fork())<0){//創建了一個新的進程
printf("fork error");
}else if(pid==0){
//execlp以執行從標準輸入讀入的命令
//執行成功不返回,失敗則返回-1,失敗原因在errno中
execlp(buf,buf,(char *)0);
printf("coundn't execute:%s",buf);
exit(127);
}
//waitpid返回的是子進程的終止的狀態(status變量)
if((pid=waitpid(pid,&status,0))<0){
printf("waitpid error");
}
printf("%%");
}
exit(0);
}
程序與進程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.