+struct jobstats {
+ /* limits */
+ long c_childmax;
+ /* child process statistics */
+ int c_living; /* running or stopped child processes */
+ int c_reaped; /* exited child processes still in jobs list */
+ int c_injobs; /* total number of child processes in jobs list */
+ /* child process totals */
+ int c_totforked; /* total number of children this shell has forked */
+ int c_totreaped; /* total number of children this shell has reaped */
+ /* job counters and indices */
+ int j_jobslots; /* total size of jobs array */
+ int j_lastj; /* last (newest) job allocated */
+ int j_firstj; /* first (oldest) job allocated */
+ int j_njobs; /* number of non-NULL jobs in jobs array */
+ int j_ndead; /* number of JDEAD jobs in jobs array */
+ /* */
+ int j_current; /* current job */
+ int j_previous; /* previous job */
+ /* */
+ JOB *j_lastmade; /* last job allocated by stop_pipeline */
+ JOB *j_lastasync; /* last async job allocated by stop_pipeline */
+};
+
+struct pidstat {
+ struct pidstat *next;
+ pid_t pid;
+ int status;
+};
+
+struct bgpids {
+ struct pidstat *list;
+ struct pidstat *end;
+ int npid;
+};
+