Example #1
0
File: fg.c Project: izissise/42sh
void	builtin_fg(t_cmd *cmd, UNSEDP t_fds *fd, t_sh *shell)
{
  int	pgid;
  int	i;
  int	nb;

  i = 0;
  nb = 0;
  if (shell->process_group == NULL || !shell->jobcontrol)
    return ;
  if (cmd->argv[1] != NULL)
    nb = my_getnbr(cmd->argv[1]) - 1;
  while ((shell->process_group[i] != NULL) && (i < nb))
    i++;
  if (shell->process_group[i] != NULL)
    {
      pgid = shell->process_group[i]->pid.pgid;
      if (pgid != -1)
        {
          SETFLAG(shell->process_group[i]->flags, FLAGPOS(FGRP_FORGROUND));
          SETFLAG(shell->process_group[i]->flags, FLAGPOS(FGRP_RUNNING));
          if (set_forground_pgrp(pgid) == -1)
            set_forground_pgrp(shell->pid.pgid);
          kill(-pgid, SIGCONT);
        }
    }
}
Example #2
0
File: job.c Project: Tastyep/42sh
void	no_fg_jobs_status(t_sh *shell)
{
  t_grp	*fg_grp;

  if ((fg_grp = get_forground_grp(shell)) != NULL)
    {
      UNSETFLAG(fg_grp->flags, FLAGPOS(FGRP_RUNNING));
      UNSETFLAG(fg_grp->flags, FLAGPOS(FGRP_FORGROUND));
      set_forground_pgrp(shell->pid.pgid);
    }
}
Example #3
0
void	set_forground_process_g(t_sh *shell, t_grp *grp)
{
    int	i;
    t_grp	*tmp_grp;

    i = 0;
    if (shell->process_group == NULL)
        return ;
    while ((tmp_grp = shell->process_group[i]) != NULL)
    {
        if (tmp_grp == grp)
        {
            SETFLAG(tmp_grp->flags, FLAGPOS(FGRP_FORGROUND));
            if (set_forground_pgrp(grp->pid.pgid) == -1)
                set_forground_pgrp(shell->pid.pgid);
        }
        else
            UNSETFLAG(tmp_grp->flags, FLAGPOS(FGRP_FORGROUND));
        i++;
    }
}