Добрый вечер, не понимаю как приостановить новый процесс. SIGINT нормально работает и завершает процесс и возвращает в мою программу, а SIGTSTP срабатывает но возврата в мою программу нет, никакой реакции пока не нажму ^C. подскажите пожалуйста как правильно реализовать?
void ft_fun_fork(char *path, char **arg) /*функция создания нового процесса*/
{
pid_t pid;
pid = fork();
signal(SIGINT, ft_fork_signal);
signal(SIGTSTP, ft_fork_signal);
if (pid == 0)
execve(path, arg, g_env);
else if (pid < 0)
{
free(path);
ft_putendl("Fork failed to create a new process.");
return ;
}
wait(&pid);
if (path)
free(path);
}
void ft_fork_signal(int signo)
{
if (signo == SIGINT)
{
ft_putstr("\n");
signal(SIGINT, ft_fork_signal);
// exit(EXIT_SUCCESS);
}
else if (signo == SIGTSTP)
{
// kill(getpid(), SIGTSTP);
ft_putstr("\n");
// signal(SIGTSTP, ft_fork_signal);
signal(SIGSTOP, SIG_DFL);
}
}