Exemple #1
0
int main(int argc,char *argv[])
{
    int i;
    char *buf = NULL;
    int argcount = 0;
    char arglist[100][256];
    char *arg[20];
    int pid;
    int stat_val;

    buf = (char *)malloc(256);
    while(1)
    {
        memset(buf,0,256);
        my_print();
  //      fflush(NULL);
        //处理输入参数的部分
        get_input(buf);
        for(i = 0;i < 100;i++)
        {
            arglist[i][0] = '\0';
        }
        argcount = 0;
        explain_input(buf,&argcount,arglist);
        for(i = 0;i < argcount;i++)
            arg[i] = &arglist[i][0];
        for(i = 0;i < argcount;i++)
            printf("%s ",arg[i]);
        if((pid = fork()) < 0)
        {
            perror("fork error");
            return 0;
        }
        switch(pid)
        {
            case 0:
                execvp(arg[0],arg);
                exit(0);
                break;
            default:
                if(waitpid(0,&stat_val,0) == -1)
                    perror("error");
        }
    }
    exit(0);
}
Exemple #2
0
int main(int argc ,char **argv) 
{
	int i;
	int argcount = 0;
	char arglist[100][256];
	char **arg =NULL;
	char *buf = NULL;
	
	buf =(char *)malloc (256);
	if(buf == NULL){
		perror("malloc failed ");
		exit(-1 );
	}
	while(1){
	//将buf所指向的空间清零
	memset(buf ,0 , 256);
	printf_prompt();
	get_input( buf);
	//若输入的命令为exit或logout则退出本程序
	if(strcmp(buf , "exit\n") == 0 || strcmp(buf , "logout\n") == 0)
		break ;
	for ( i=0 ; i <100 ;i++ )
	{
		arglist[i][0] = '\0';
	}

	argcount = 0;
	explain_input(buf,&argcount,arglist);
	do_cmd(argcount ,arglist );
	}

	if(buf != NULL ) {
		free(buf );
		buf = NULL;
	}
	
	exit(0);
}