---------------------加油!
本篇的理论较少,当然代码量也很少就仅仅是上传的代码而已。
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<string.h>
#define MAX_ORDER 1024
#define MAX_LINE 32
int main()
{
//命令 输入
char cmd[MAX_ORDER];
char* line[MAX_LINE]; //指令参数 拆开
//shell 脚本是一直运行的状态
while(1)
{
printf("\n[WGzZs@VM-4-11-centos my_shell]# ");
fgets(cmd,MAX_ORDER,stdin); //读取
cmd[strlen(cmd)-1]='\0'; //解决\n
//printf("%s\n",cmd);
line[0]=strtok(cmd," ");
int i=1;
while(line[i]=strtok(NULL," ")){
i++;
}
//创建子进程 进行调用
pid_t id=fork();
if( id == 0 )
{
//child 进行执行
execvp(line[0],line);
// 执行谁 怎样执行
}
int status=0;
pid_t ret=waitpid(id,&status,0); //此时父进程只需要等就行了
if(ret >0)
{
printf("exit code:%d\n",WEXITSTATUS(status));
}
}
return 0;
}
最终代码就段落。
祝你好运~