2010-06-08 10 views
0

J'écris actuellement mon propre programme shell. Ce shell simple peut simplement exécuter des commandes.Comment gérer les entrées dans un programme C shell pendant l'exécution

Lors de l'exécution de commandes telles que vi ou calc nécessitant une entrée du terminal, la commande est exécutée et attend l'entrée de l'utilisateur. Mais je suis incapable de donner n'importe quelle entrée sur l'écran.

Comment l'entrée doit-elle être gérée pendant la fourchette et l'exec?

Voici le morceau de code qui exécute les commandes:

if((pid = fork()) < 0) 
    { 
      perror("Fork failed"); 
      exit(errno); 
    } 
    if(pid == 0) 
    { 
      // Child process 
      if(execvp(arguments[0], arguments) == -1) 
      { 
        child_status = errno; 
        switch(child_status) 
        { 
          case ENOENT: 
            printf(" command not found \n"); 
            break; 
        } 
        exit(errno); 
      } 
    } 
    else 
    { 
      // parent process 
      int wait_stat; 
      if(waitpid(pid , &wait_stat, WNOHANG) == -1) 
      { 
        printf(" waitpid failed \n"); 
        return; 
      } 
    } 

} ~

Merci,

+1

Est-ce ce devoir? – msw

Répondre

3

Le WNOHANG est à l'origine du processus parent de ne pas attendre et donc (selon plate-forme) le processus enfant sera détaché du terminal IO ou mourra.

Supprimez le WNOHANG.

+0

Merci. Et ce n'est pas les devoirs. –