J'écris un programme pseudo-shell qui crée un enfant à partir d'un processus parent. Le processus parent attend que l'enfant termine avant de continuer. Mon code fourcheur ressemble à ceci:C - pseudo-shell et concurrence
if(fork()==0)
{
execvp(cmd, args);
}
else
{
int status = 0;
wait(&status);
printf("Child exited with status of %d\n", status);
}
Mais, je veux être en mesure d'analyser l'opérateur « & », de sorte que si un utilisateur, il entre à la fin d'une ligne de commande, le parent ne sera pas attendez l'enfant avant d'inviter l'utilisateur à une autre commande. J'ai ajouté du code pour gérer cela, mais je ne savais pas exactement si ça marchait bien. Est-ce que cela ressemblerait à quelque chose comme:
if(fork()==0)
{
execvp(cmd, args);
}
else
{
if(andOp = 1) //boolean to keep track of if '&' was encountered in parsing
{
shellFunc(); //main function to prompt user for a cmd line
}
int status = 0;
wait(&status);
printf("Child exited with status of %d\n", status);
}
Est-ce que cela accomplit réellement la concurrence réalisée par le shell normal?