예제 #1
0
파일: execute.c 프로젝트: dusartc/tpC
void execute_ligne_commande(){
  int flag;
  int nb;
  char *** result = ligne_commande(&flag,&nb);
  if(result != NULL){
    char ** argv = result[0];
    if(strcmp(argv[0],"exit")==0)
      exit(1);
    affiche(result);
    int f;
    if((f=fork())==0){
      execvp(argv[0],argv);
      perror("execvp");
      exit(1);
    }
    int status;
    if(flag == 0){
      printf("bloquant\n");
      waitpid(f,&status,0);
    } else {
      printf("non bloquant\n");
      waitpid(f,&status,WNOHANG);
    }

    libere(result);
  }
}
예제 #2
0
void execute_ligne_commande()
{
	int flag, nb, i, pid;

	char ***argv = ligne_commande(&flag, &nb);

	if (flag == -1)
		return;

	for(i = 0 ; i < nb ; i++)
	{
		pid = fork();
		if(pid == 0) {
			execvp(argv[i][0], argv[i]);
			printf("iutshell: %s: commande introuvable\n", argv[i][0]);
			exit(1);
		}
		else
		{
			if (flag == 0)
				waitpid(pid, NULL, 0);
		}
	}
}
예제 #3
0
void execute_ligne_commande(){
	int nb,flag, status, pid;
	char *** cmd = ligne_commande(&flag, &nb);
	if(cmd == NULL)
		return;
	if(flag==-1)
		perror(cmd[0][0]);
		
	if(strcmp(cmd[0][0], "exit")==0)
		exit(1);
	if((pid=fork()) == 0)
	{
		execvp(cmd[0][0], cmd[0]);
		perror(cmd[0][0]);
		exit(-1);
	}
	else if(flag != 1)
	{
		pid = waitpid(pid, &status,0);
		if(pid == -1)
			perror("waitpid error");
	}
	libere(cmd);
}