removed debug messages in job control before merge
This commit is contained in:
parent
0ec9313b4c
commit
da285e7c1f
16 changed files with 28 additions and 33 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit d799465c2e0d51f24fe4d5cf1e51c5109a1617a0
|
Subproject commit af71e8b8de26051cd63fde8ab82c90801bd835d8
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */
|
/* Created: 2016/11/14 17:28:14 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 11:03:44 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:28:41 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */
|
/* Created: 2016/12/13 14:20:45 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 10:30:35 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:28:36 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ int launch_process(t_process *p)
|
||||||
set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env));
|
set_exitstatus((*p->execf)(p->path, p->av, data_singleton()->env));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DG("process is to be forked, %i->[]->%i, attr=%b", p->fdin, p->fdout, p->attributes);
|
/* DG("process is to be forked, %i->[]->%i, attr=%b", p->fdin, p->fdout, p->attributes); */
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attributes &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_RUNNING;
|
p->attributes |= PROCESS_RUNNING;
|
||||||
if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT)
|
if (p->attributes & (PROCESS_BINARY | PROCESS_SCRIPT)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */
|
/* Created: 2016/12/13 13:54:51 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/08 15:41:56 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:30:12 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,13 +25,13 @@ int job_addprocess(t_process *p)
|
||||||
job->id = jobc->current_id;
|
job->id = jobc->current_id;
|
||||||
job->pgid = p->pid;
|
job->pgid = p->pid;
|
||||||
ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job)));
|
ft_lstadd(&jobc->first_job, ft_lstnew(job, sizeof(*job)));
|
||||||
DG("added new job [%i]", job->id);
|
/* DG("added new job [%i]", job->id); */
|
||||||
}
|
}
|
||||||
job = jobc->first_job->content;
|
job = jobc->first_job->content;
|
||||||
if (p->pid > 0)
|
if (p->pid > 0)
|
||||||
{
|
{
|
||||||
ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p)));
|
ft_lsteadd(&job->first_process, ft_lstnew(p, sizeof(*p)));
|
||||||
DG("added pid=%i to [%i]", p->pid, job->id);
|
/* DG("added pid=%i to [%i]", p->pid, job->id); */
|
||||||
}
|
}
|
||||||
if (JOB_IS_BG(job->attributes) && IS_PIPEEND(p->attributes))
|
if (JOB_IS_BG(job->attributes) && IS_PIPEEND(p->attributes))
|
||||||
job_notify_new(job);
|
job_notify_new(job);
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */
|
/* Created: 2016/12/13 15:10:20 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 14:03:40 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:30:33 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,10 +25,10 @@ int job_is_completed(int id)
|
||||||
while (lst)
|
while (lst)
|
||||||
{
|
{
|
||||||
p = lst->content;
|
p = lst->content;
|
||||||
DG("checking pid=%i", p->pid);
|
/* DG("checking pid=%i", p->pid); */
|
||||||
if (!(p->attributes & PROCESS_COMPLETED))
|
if (!(p->attributes & PROCESS_COMPLETED))
|
||||||
{
|
{
|
||||||
DG("process %i is not completed", p->pid);
|
/* DG("process %i is not completed", p->pid); */
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
lst = lst->next;
|
lst = lst->next;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */
|
/* Created: 2016/12/13 15:06:45 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 10:31:56 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:30:05 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */
|
/* Created: 2016/12/15 12:51:08 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 16:46:42 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:31:00 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -19,11 +19,11 @@ void job_remove(int id)
|
||||||
jobc = &data_singleton()->jobc;
|
jobc = &data_singleton()->jobc;
|
||||||
if (job_is_completed(id))
|
if (job_is_completed(id))
|
||||||
{
|
{
|
||||||
DG("job_remove");
|
/* DG("job_remove"); */
|
||||||
if (id < data_singleton()->jobc.current_id)
|
if (id < data_singleton()->jobc.current_id)
|
||||||
data_singleton()->jobc.current_id = id;
|
data_singleton()->jobc.current_id = id;
|
||||||
ft_lst_delif(&jobc->first_job, &id, job_cmp_id, job_free);
|
ft_lst_delif(&jobc->first_job, &id, job_cmp_id, job_free);
|
||||||
}
|
}
|
||||||
else
|
/* else */
|
||||||
DG("job_remove failed (not completed)");
|
/* DG("job_remove failed (not completed)"); */
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */
|
/* Created: 2016/12/15 12:56:11 by jhalford #+# #+# */
|
||||||
/* Updated: 2016/12/15 15:09:05 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:33:09 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -17,7 +17,6 @@ void job_update_status(void)
|
||||||
int status;
|
int status;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
DG("updating job status'");
|
|
||||||
pid = waitpid (WAIT_ANY, &status, WUNTRACED | WNOHANG);
|
pid = waitpid (WAIT_ANY, &status, WUNTRACED | WNOHANG);
|
||||||
while (!process_mark_status(pid, status))
|
while (!process_mark_status(pid, status))
|
||||||
pid = waitpid (WAIT_ANY, &status, WUNTRACED | WNOHANG);
|
pid = waitpid (WAIT_ANY, &status, WUNTRACED | WNOHANG);
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */
|
/* Created: 2017/01/09 13:05:55 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 11:30:52 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:27:47 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
|
/* Created: 2016/12/12 12:41:11 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 10:55:31 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:28:22 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -23,13 +23,13 @@ int process_mark_status(pid_t pid, int status)
|
||||||
p->status = status;
|
p->status = status;
|
||||||
if (WIFSTOPPED(status))
|
if (WIFSTOPPED(status))
|
||||||
{
|
{
|
||||||
DG("marking: pid=%i, status=%i (stopped sig %i)", pid, status, WTERMSIG(status));
|
/* DG("marking: pid=%i, status=%i (stopped sig %i)", pid, status, WTERMSIG(status)); */
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attributes &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_SUSPENDED;
|
p->attributes |= PROCESS_SUSPENDED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DG("marking: pid=%i, status=%i (completed sig %i)", pid, status, WTERMSIG(status));
|
/* DG("marking: pid=%i, status=%i (completed sig %i)", pid, status, WTERMSIG(status)); */
|
||||||
p->attributes &= ~PROCESS_STATE_MASK;
|
p->attributes &= ~PROCESS_STATE_MASK;
|
||||||
p->attributes |= PROCESS_COMPLETED;
|
p->attributes |= PROCESS_COMPLETED;
|
||||||
if (WIFSIGNALED(status))
|
if (WIFSIGNALED(status))
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */
|
/* Created: 2016/12/13 14:58:36 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/10 11:06:02 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:32:49 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -24,15 +24,13 @@ int put_job_in_foreground(t_job *job, int cont)
|
||||||
signal(SIGTTOU, SIG_IGN);
|
signal(SIGTTOU, SIG_IGN);
|
||||||
if (tcsetpgrp(STDIN, job->pgid) == -1)
|
if (tcsetpgrp(STDIN, job->pgid) == -1)
|
||||||
DG("couldn't put process in control. errno=%i, pgid=%i", errno, job->pgid);
|
DG("couldn't put process in control. errno=%i, pgid=%i", errno, job->pgid);
|
||||||
else
|
|
||||||
DG("pgid %i is now in control.", job->pgid);
|
|
||||||
signal(SIGTTOU, sigttou_handler);
|
signal(SIGTTOU, sigttou_handler);
|
||||||
tcsetattr (STDIN, TCSANOW, &job->tmodes);
|
tcsetattr (STDIN, TCSANOW, &job->tmodes);
|
||||||
if (kill(-job->pgid, SIGCONT) < 0)
|
if (kill(-job->pgid, SIGCONT) < 0)
|
||||||
perror("kill (SIGCONT)");
|
perror("kill (SIGCONT)");
|
||||||
}
|
}
|
||||||
/* Wait for it to report. */
|
/* Wait for it to report. */
|
||||||
DG("gonna wait for job id=%i", job->id);
|
/* DG("gonna wait for job id=%i", job->id); */
|
||||||
job_wait(job->id);
|
job_wait(job->id);
|
||||||
job_remove(job->id);
|
job_remove(job->id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/10 17:37:56 by jhalford #+# #+# */
|
/* Created: 2016/12/10 17:37:56 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/08 11:28:29 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:33:18 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ void sigchld_handler(int signo)
|
||||||
|
|
||||||
(void)signo;
|
(void)signo;
|
||||||
data = data_singleton();
|
data = data_singleton();
|
||||||
DG("got SIGCHLD");
|
/* DG("got SIGCHLD"); */
|
||||||
/* if (do_job_notification()) */
|
/* if (do_job_notification()) */
|
||||||
/* ft_putstr(SHELL_PROMPT); */
|
/* ft_putstr(SHELL_PROMPT); */
|
||||||
if (data_singleton()->mode != MODE_EXEC)
|
if (data_singleton()->mode != MODE_EXEC)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/01 12:14:12 by jhalford #+# #+# */
|
/* Created: 2016/12/01 12:14:12 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 14:28:54 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:31:35 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/10 14:22:34 by jhalford #+# #+# */
|
/* Created: 2016/11/10 14:22:34 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 14:28:20 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:31:27 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -14,9 +14,7 @@
|
||||||
|
|
||||||
int ft_prompt(void)
|
int ft_prompt(void)
|
||||||
{
|
{
|
||||||
DG("do_job_notification() before prompt");
|
|
||||||
do_job_notification();
|
do_job_notification();
|
||||||
DG("new prompt now");
|
|
||||||
ft_putstr(SHELL_PROMPT);
|
ft_putstr(SHELL_PROMPT);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/03 13:35:03 by jhalford #+# #+# */
|
/* Created: 2016/12/03 13:35:03 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 15:35:56 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:31:46 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */
|
/* Created: 2016/12/12 17:23:59 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/01/09 15:36:12 by jhalford ### ########.fr */
|
/* Updated: 2017/01/10 12:31:34 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue