У меня есть этот фрагмент кода, который я разработал, чтобы решить проблему, которая у меня есть в другой крупной программе, которую я разрабатываю.Как остановить программу внутри родительского или дочернего процесса?
#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);
}
}
}
Моя цель проста, когда пользователь вводит quit.
Я просто показать
Бросить команда нашла
Выход ...
И есть задержка в одну секунду между каждым из этих трех точек.
Однако выход, который я получаю
Бросить команда нашла
Выход . другие вещи ..
Однако то, что, кажется, происходит в том, что родительский процесс возвращается, а затем выполняет другие вещи из вызывающей функции, прежде чем он продолжает печатать две другие точки. Как я могу избежать выполнения родительского процесса?
Это не C! – Olaf
@Olaf Это в основном c – Pro
И искусственные задержки в программе всегда являются причиной раздражения, что усугубляет пользователя. – Olaf