Добрый вечер, не могу разобраться как пользоваться setpgid мне нужно присвоить новому процессу группу отличную от родителя, чтобы при нажатии cntl+Z вставал на паузу только процесс вызванный с помощью execve а мой псевдо bash продолжал работу. Помогите пожалуйста разобраться
void	ft_infinit_pipe2(t_exectoken *head, t_memory *q)
{
	int			p[2];
	pid_t		pid;
	int			fd_in;
	char		*rt;
	int			status;
	fd_in = 0;
	ft_file_create(head);
	rt = NULL;
	while (head)
	{
		if (pipe(p) == -1 || (pid = fork()) == -1)
		{
			ft_putstr_fd("ERROR pipe or fork", 2);
			exit(1);
		}
		else if (pid == 0)
		{
			if (head->left != NULL)
			{
				dup2(p[1], 1);
				close(p[1]);
			}
			if (head->file_opt)
				ft_fd_flag(head->file_opt, &fd_in);
			dup2(fd_in, 0);
			close(p[0]);
			if (ft_whatis2(head, q) == 0)
			{
				exit(0);
			}
			else
				rt = hash_get(head->file_args[0], 0);
			if (rt != NULL)
				ft_start_exe(rt, head->file_args, pid);
			exit(0);
		}
		else
		{
			g_pid = pid;
//			setpgid(g_pid, getpgid(g_pid) + 100);
			signal(SIGINT, ft_fork_signal);
//			signal(SIGSTOP, SIG_IGN);/////?????
//			signal(SIGTSTP, ft_fork_signal);////cntrl+Z
//			printf("%spid: %d%s\n", RED, pid, RESET);
			if (g_pid != -1)
				waitpid(pid, &status, 0);
//			printf("%sstatus: %d%s\n", RED, status, RESET);
			if (WIFEXITED(status))
			{
				g_exit_code = WEXITSTATUS(status);
				if (rt == NULL)
					g_exit_code = 127;
//				printf("%sExit status of the child was %d%s\n", YEL, g_exit_code, RESET);
			}
			close(p[1]);
			fd_in = p[0];
			head = (head)->left;
		}
	}
}
