[mod.std.unix] CHILD_MAX as a constant - is it meaningful?

std-unix@ut-sally.UUCP (Moderator, John Quarterman) (11/09/85)

Date: 06 Oct 85 18:53:05 +1000 (Sun)
>From: Robert Elz <munnari!kre@seismo.CSS.GOV>

Section 2.7 of P1003 draft 4 [ Section 2.8 of Draft 5 -jsq ]
requires that implementations must define values of certain
constants in <limits.h>.

One of the required constants is CHILD_MAX, the maximum number
of offspring per userid.

This definition is a little to vague to be useable (it most likely
intends to specify the maximum number of processes per userid, it may
be debated whether the first process for a userid is an "offspring",
it is also unlear whether this applies to "offspring" from some
particular process - perhaps the maximum number of processes a user
is permitted to run per login session?)

This can easily be fixed, but I have a more serious complaint:

Specifying per-userid limits as constants (that is, requiring
an implementation to specify such a constant, and constraining
it to a minimum value of that constant) does not seem to be
an intelligent thing to do.

Ideally, per-userid limits are exactly that, set individually
for individual users.  In an enviroment like this (again, mine)
am I to set CHILD_MAX to the maximum number of processes that
any user may may have running (which would be the same as PROC_MAX,
as userid == 0 may run this many, and as such would be a meaningless
value), or should I set it to the mininum value that any user
will ever have for the maximum number of process permitted to be
running (for some users, that will be 1 [aside: I can give
entirely reasonable justifications for this limit - for some
userids who do not represent humans], again making the constant useless.
I could set it to an arbitrary approximate value - one that
applies to many, or most, users, but that hardly seems satisfactory
either.

So, I recommend doing away with this constant from <limits.h>,
which is not to say that implementations may not impose such
a limit, merely that attempting to specify the value of the
limit as a system wide constant is not reasonable.

[ I think the justification for CHILD_MAX was that some
implementations do have such a limit (for UIDs other than 0),
and they wanted to guarantee a "minimum limit" of 4 offspring.
Your argument against CHILD_MAX is a good one, though.
For more general objections to <limits.h>, see farther on..
-Gwyn ]

Robert Elz		seismo!munnari!kre	kre%munnari.oz@seismo.css.gov

[ Note that the X3J11 draft has the same problems as the P1003 draft,
since they have many of the same constants defined, and where that is so,
they have the same definitions (I think P1003 got them from X3J11).
X3J11 has a copy of the original mail items through Don Kretsch.  -jsq ]

Volume-Number: Volume 3, Number 7