Lines Matching refs:proc
153 modify(Proc_t* proc, int forked, int op, long arg1, long arg2) in modify() argument
212 m->next = proc->mods; in modify()
213 proc->mods = m; in modify()
263 proc->pgrp = arg1; in modify()
270 proc->mods = m->next; in modify()
274 proc->mods = m->next; in modify()
278 NoP(proc); in modify()
290 restore(Proc_t* proc) in restore() argument
296 NoP(proc); in restore()
298 m = proc->mods; in restore()
299 proc->mods = 0; in restore()
365 register Proc_t* proc = 0; in procopen() local
420 proc = &proc_default; in procopen()
421 else if (!(proc = newof(0, Proc_t, 1, 0))) in procopen()
423 proc->pid = -1; in procopen()
424 proc->pgrp = 0; in procopen()
425 proc->rfd = -1; in procopen()
426 proc->wfd = -1; in procopen()
427 proc->flags = flags; in procopen()
459 proc->pid = 0; in procopen()
464 proc->pid = 0; in procopen()
474 proc->sigint = signal(SIGINT, SIG_IGN); in procopen()
475 proc->sigquit = signal(SIGQUIT, SIG_IGN); in procopen()
480 sigprocmask(SIG_BLOCK, &mask, &proc->mask); in procopen()
484 proc->mask = sigblock(mask); in procopen()
486 proc->sigchld = signal(SIGCHLD, SIG_DFL); in procopen()
491 proc->pid = fork(); in procopen()
494 else if (!proc->pid) in procopen()
496 if (proc->sigint != SIG_IGN) in procopen()
498 proc->sigint = SIG_DFL; in procopen()
499 signal(SIGINT, proc->sigint); in procopen()
501 if (proc->sigquit != SIG_IGN) in procopen()
503 proc->sigquit = SIG_DFL; in procopen()
504 signal(SIGQUIT, proc->sigquit); in procopen()
508 sigprocmask(SIG_SETMASK, &proc->mask, NiL); in procopen()
511 sigsetmask(proc->mask); in procopen()
513 if (proc->sigchld != SIG_IGN) in procopen()
519 else if (proc->pid == -1) in procopen()
524 if (!proc->pid) in procopen()
550 modify(proc, forked, PROC_sig_ign, SIGHUP, 0); in procopen()
552 modify(proc, forked, PROC_sig_dfl, SIGTERM, 0); in procopen()
554 modify(proc, forked, PROC_sig_ign, SIGTSTP, 0); in procopen()
557 modify(proc, forked, PROC_sig_ign, SIGTTIN, 0); in procopen()
560 modify(proc, forked, PROC_sig_ign, SIGTTOU, 0); in procopen()
565 modify(proc, forked, PROC_sig_ign, SIGINT, 0); in procopen()
567 modify(proc, forked, PROC_sig_ign, SIGQUIT, 0); in procopen()
571 modify(proc, forked, PROC_sys_pgrp, -1, 0); in procopen()
586 if (modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, pio[0], PROC_ARG_NULL)) in procopen()
588 if (modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, pio[1], 1)) in procopen()
591 if (modify(proc, forked, PROC_fd_dup, 1, 0)) in procopen()
594 if (modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, poi[0], 0)) in procopen()
596 if (poi[1] != 0 && modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, poi[1], PROC_ARG_NULL)) in procopen()
602 if (modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, pio[!!procfd], !!procfd)) in procopen()
604 …if (pio[!procfd] != !!procfd && modify(proc, forked, PROC_fd_dup|PROC_FD_CHILD, pio[!procfd], PROC… in procopen()
615 if (modify(proc, forked, PROC_OP(n), PROC_ARG(n, 1), PROC_ARG(n, 2))) in procopen()
619 if (modify(proc, forked, PROC_OP(n), PROC_ARG(n, 1), 0)) in procopen()
660 return proc; in procopen()
685 else if ((proc->pid = spawnveg(path, p, environ, proc->pgrp)) != -1) in procopen()
714 proc->pid = spawnveg(env + 2, p, environ, proc->pgrp); in procopen()
736 restore(proc); in procopen()
741 if (proc->pid != -1) in procopen()
748 proc->sigint = signal(SIGINT, SIG_IGN); in procopen()
749 proc->sigquit = signal(SIGQUIT, SIG_IGN); in procopen()
754 sigprocmask(SIG_BLOCK, &mask, &proc->mask); in procopen()
758 proc->mask = sigblock(mask); in procopen()
760 proc->sigchld = signal(SIGCHLD, SIG_DFL); in procopen()
775 if (proc->pgrp < 0) in procopen()
776 proc->pgrp = proc->pid; in procopen()
777 else if (proc->pgrp > 0) in procopen()
779 if (proc->pgrp == 1) in procopen()
780 proc->pgrp = proc->pid; in procopen()
781 if (setpgid(proc->pid, proc->pgrp) < 0 && proc->pid != proc->pgrp && errno == EPERM) in procopen()
782 setpgid(proc->pid, proc->pid); in procopen()
800 proc->wfd = pio[1]; in procopen()
805 proc->wfd = pio[0]; in procopen()
807 proc->wfd = poi[1]; in procopen()
812 proc->rfd = pio[0]; in procopen()
816 if (proc->rfd > 2) in procopen()
817 fcntl(proc->rfd, F_SETFD, FD_CLOEXEC); in procopen()
818 if (proc->wfd > 2) in procopen()
819 fcntl(proc->wfd, F_SETFD, FD_CLOEXEC); in procopen()
821 if (!proc->pid) in procopen()
822 proc->pid = getpid(); in procopen()
823 return proc; in procopen()
828 if (proc->sigint != SIG_IGN) in procopen()
829 signal(SIGINT, proc->sigint); in procopen()
830 if (proc->sigquit != SIG_IGN) in procopen()
831 signal(SIGQUIT, proc->sigquit); in procopen()
834 sigprocmask(SIG_SETMASK, &proc->mask, NiL); in procopen()
837 sigsetmask(proc->mask); in procopen()
839 if (proc->sigchld != SIG_DFL) in procopen()
840 signal(SIGCHLD, proc->sigchld); in procopen()
867 procfree(proc); in procopen()