J'ai ce morceau de code que j'ai développé juste pour résoudre un problème que j'ai dans un autre grand programme que je développe.Comment puis-je arrêter le programme dans le processus parent ou enfant?
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <cstdlib>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <limits.h>
#include <string>
#include <iostream>
using namespace std;
void processLine (char []);
void readLine(char []);
const int LIMIT = 512;
int main(int argc, char *argv[])
{
char oneLine[LINE_MAX];
readLine(oneLine);
return 0;
}
void readLine(char line[])
{
processLine(line);
//Otherstuff
------------
}
void processLine(char line[])
{
pid_t process;
int child_status;
string input;
cout << "Input: ";
cin >> input;
process = fork();
if(process == 0)
{ // do nothing
}
else
{
//parent
if(input == "quit")
{
printf("Quit command found ! \nExiting ");
for(int i = 0;i < 3;i++)
{
printf(".");
fflush(stdout);
sleep(1);
}
printf("\n");
exit(0);
}
else
{
wait(&child_status);
}
}
}
Mon but est simple, lorsque l'utilisateur saisit quitter.
Je vais juste afficher
quit trouvé
... Sortie
Et il y a un retard d'une seconde entre chacun de ces trois points.
Cependant la sortie que je reçois est
quit trouvé
Sortie. d'autres choses ..
Cependant, ce qui semble se produire est que le processus revient mère et exécute ensuite d'autres choses de la fonction d'appel avant qu'il continue d'imprimer les deux autres points. Comment éviter le processus parent de faire cela?
Ce n'est pas C! – Olaf
@Olaf Ceci est principalement c – Pro
Et les retards artificiels dans un programme sont toujours cause d'irritation et aggravent l'utilisateur. – Olaf