В настоящее время я пишу программу на C, которая будет (в ограниченной степени) имитировать командную строку или терминал.Пока он может запускать команды, знает, как идентифицировать внутренние команды, а также понимает, что CTRL + C останавливает запущенный процесс, не убивая оболочку, но я не могу заставить его работать - это CTRL + Z (который приостановил быпроцесс с использованием SIGTSTP, как показано ниже) (где taskPID - это текущий идентификатор процесса после разветвления).Если я вызову CTRL + C в работающем процессе, он отобразит сообщение и вернется к приглашению оболочки (которое является циклом while в основном). Если я вызову CTRL + Z, он зависнет и покажет бесконечный мигающий курсор, и япотерять контроль над Shell.Любые идеи будут оценены, так как я застрял на этом.
void
sigint_handler (int sig)
{
printf("Process[%d] was Terminated Suddenly by User via (CTRL + C)\n",taskPID);
kill(-taskPID, SIGINT);
}
void
sigtstp_handler (int sig)
{
printf("Process[%d] was Suspended by User via (CTRL + Z)\n",taskPID);
kill(-taskPID, SIGTSTP);
}