Lines Matching refs:pid

59 	pid_t		pid;
217 static struct jobsave *jobsave_create(pid_t pid)
220 job_chksave(pid);
232 jp->pid = pid;
246 register pid_t pid;
261 if(sfprintf(sfstderr,"ksh: job line %4d: reap pid=%d critical=%d signal=%d\n",__LINE__,getpid(),job.in_critical,sig) <=0)
280 pid = waitpid((pid_t)-1,&wstat,flags);
288 if (pid<0 && errno==EINVAL && (flags&WCONTINUED))
289 pid = waitpid((pid_t)-1,&wstat,flags&=~WCONTINUED);
291 if(pid<0 && errno==EINTR && (sig||job.savesig))
293 if(pid<=0)
298 lastpid = pid;
299 if(!(pw=job_bypid(pid)))
302 sfprintf(sfstderr,"ksh: job line %4d: reap pid=%d critical=%d unknown job pid=%d pw=%x\n",__LINE__,getpid(),job.in_critical,pid,pw);
312 jp = jobsave_create(pid);
314 lastpid = pw->p_pid = pid;
346 if(pid==sh.cpid)
354 sh_subjobcheck(pid);
407 sfprintf(sfstderr,"ksh: job line %4d: reap pid=%d critical=%d job %d with pid %d flags=%o complete with status=%x exit=%d\n",__LINE__,getpid(),job.in_critical,pw->p_job,pid,pw->p_flag,wstat,pw->p_exit);
413 if(pid==pw->p_fgrp && pid==tcgetpgrp(JOBTTY))
421 if(!sh.intrap && sh.st.trapcom[SIGCHLD] && pid>0 && (pwfg!=job_bypid(pid)))
508 setpgid(0,shp->pid);
517 job.mypgid = shp->pid;
519 tcsetpgrp(JOBTTY,shp->pid);
520 setpgid(0,shp->pid);
533 kill(shp->pid,SIGTTIN);
574 setpgid(0,shp->pid);
588 tcsetpgrp(JOBTTY,shp->pid);
601 job.mypid = shp->pid;
698 if((pw->p_flag&P_STOPPED) || tcgetpgrp(job.fd) == sh.pid)
735 register pid_t pid;
747 pid = pw->p_pid;
753 pid = (int)strtol(jp, (char**)0, 10);
754 job_wait(-pid);
803 int pid = (int)strtol(jobid, (char**)0, 10);
804 if(pid<0)
810 if(!(pw = job_bypid(pid)))
813 pw->p_pid = pid;
814 pw->p_pgrp = pid;
953 register pid_t pid;
965 pid = pw->p_pid;
968 if(pid==0 && job.jobcontrol)
971 if(sig==SIGSTOP && pid==sh.pid && sh.ppid==1)
979 if(pid>=0)
981 if((r = kill(pid,sig))>=0 && !stopsig)
986 kill(pid,SIGCONT);
991 if((r = killpg(-pid,sig))>=0 && !stopsig)
995 killpg(-pid,SIGCONT);
1000 if(pid>=0)
1001 r = kill(pid,sig);
1003 r = killpg(-pid,sig);
1008 if(pid = pw->p_pgrp)
1010 r = killpg(pid,sig);
1123 * put the process <pid> on the process list and return the job number
1127 int job_post(pid_t pid, pid_t join)
1153 if(pw = job_bypid(pid))
1188 pw->p_pid = pid;
1196 job.curpgid = pid;
1203 sfprintf(sfstderr,"ksh: job line %4d: post pid=%d critical=%d job=%d pid=%d pgid=%d savesig=%d join=%d\n",__LINE__,getpid(),job.in_critical,pw->p_job,
1213 if ((val = job_chksave(pid)) >= 0)
1242 static struct process *job_bypid(pid_t pid)
1248 if(px->p_pid==pid)
1291 * Wait for process pid to complete
1292 * If pid < -1, then wait can be interrupted, -pid is waited for (wait builtin)
1293 * pid=0 to unpost all done processes
1294 * pid=1 to wait for at least one process to complete
1295 * pid=-1 to wait for all runing processes
1298 int job_wait(register pid_t pid)
1304 if(pid <= 0)
1306 if(pid==0)
1308 pid = -pid;
1312 if(pid > 1)
1314 if(pid==sh.spid)
1316 if(!(pw=job_bypid(pid)))
1319 if((sh.exitval = job_chksave(pid)) < 0)
1339 sfprintf(sfstderr,"ksh: job line %4d: wait pid=%d critical=%d job=%d pid=%d\n",__LINE__,getpid(),job.in_critical,jobid,pid);
1341 sfprintf(sfstderr,"ksh: job line %4d: wait pid=%d critical=%d flags=%o\n",__LINE__,getpid(),job.in_critical,pw->p_flag);
1440 if((intr && sh.trapnote) || (pid==1 && !intr))
1445 if(pid==1)
1602 sfprintf(sfstderr,"ksh: job line %4d: drop pid=%d critical=%d pid=%d env=%d\n",__LINE__,getpid(),job.in_critical,pwtop->p_pid,pwtop->p_env);
1637 sfprintf(sfstderr,"ksh: job line %4d: free pid=%d critical=%d job=%d\n",__LINE__,getpid(),job.in_critical,pwtop->p_job);
1741 * if pid==0, then oldest saved process is deleted
1742 * If pid is not found a -1 is returned.
1744 static int job_chksave(register pid_t pid)
1751 if(jp->pid==pid)
1753 if(pid==0 && !jp->next)
1761 if(pid)
1801 if(jp->pid==sh.spid)
1808 job_chksave(jp->pid);
1837 sfprintf(sfstderr,"ksh: job line %4d: fork pid=%d critical=%d parent=%d\n",__LINE__,getpid(),job.in_critical,parent);