#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<sys/wait.h>
int main(int argc,char* argv[])
{
while(1)
{
char buf[1024]={0};
printf("[user@host path]$ ");
fflush(stdout);//刷新缓冲区 printf是行缓冲,不刷新不打印
fgets(buf,1023,stdin);
buf[strlen(buf)-1]='\0';
//printf("buf:[%s]\n",buf);
char* ptr=buf;
char myargv[32][32]={0};
int myargc=0;
while(*ptr!='\0')
{
if(!isspace(*ptr))
{
int count=0;
while(*ptr!='\0' && !isspace(*ptr))
{
myargv[myargc][count]=*ptr;
count++;
ptr++;
}
myargc++;
}
ptr++;
}
//for(int i=0;i<myargc;i++)
// {
// printf("myargv[%d]=[%s]\n",i,myargv[i]);
// }
char* arg[32]={NULL};
int i;
for(i=0;i<myargc;i++)
{
arg[i]=myargv[i];
}
arg[myargc]=NULL;
pid_t pid = fork();
if(pid<0)
{
continue;
}
else if(pid==0)
{
execvp(arg[0],arg);
exit(-1);
}
wait(NULL);
}
return 0;
}
Linux进程控制-minishell的实现
于 2023-02-24 21:17:31 首次发布