Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Pid or not pid



> Some of the code in execcmd() is getting executed in the parent rather
> than the child, presumably since the last rearrangement... in
> particular, nice(5) is getting called if fork() returned a non-zero
> pid, i.e. in the parent (line 1350 of exec.c).  This means each time a
> background process is forked, the parent shell has a lower priority.
> This may be a good way to deal with process hogs, but I don't think
> it's what's intended.

This is for beta12-test2.  This bug is not present in beta10 or beta11.

rc


*** exec.c	1995/11/16 03:31:23	1.89
--- exec.c	1995/11/16 22:05:14
***************
*** 1345,1353 ****
  	    read(synch[0], &dummy, 1);
  	    close(synch[0]);
  	    if (how & Z_ASYNC) {
- 		/* Check if we should run this job at a lower priority */
- 		if (isset(BGNICE))
- 		    nice(5);
  		lastpid = pid;
  	    } else if (!jobtab[thisjob].stty_in_env && nonempty(cmd->vars)) {
  		/* search for STTY=... */
--- 1345,1350 ----
***************
*** 1367,1372 ****
--- 1364,1373 ----
  	forked = 1;
  	if (sigtrapped[SIGINT] == 2)
  	    holdintr();
+ 	/* Check if we should run background jobs at a lower priority. */
+ 	if ((how & Z_ASYNC) && isset(BGNICE))
+ 	    nice(5);
+ 
      } else if (is_cursh) {
  	/* This is a current shell procedure that didn't need to fork.    *
  	 * This includes current shell procedures that are being exec'ed, *




Messages sorted by: Reverse Date, Date, Thread, Author