Re: Stupid API Question.

Richard B. Johnson (root@chaos.analogic.com)
Mon, 7 Apr 2003 16:28:29 -0400 (EDT)


On Mon, 7 Apr 2003, Robert White wrote:

> I have looked, but I have not found...
>
> Is there a (safe) Kernel API for setting a processes appearance on the PS
> listing? (e.g. it's name etc.)
>
> I have seen the nonsense about clearing out your various argv[] elements and
> then using strncpy to replace argv[0]. That seems neither safe nor elegant.
> It also seems thread unsafe, or at least thread un-interesting, since all
> the threads would be tagged with the same/last such call.
>
> If it exists, where might it be found?
>
>
> If it doesn't exist...
>
> An API that could change the text for everything after argv[0] and filled a
> pointer in the process structure for the process, would be interesting.
>
> I say *after* argv[0] because I think having *any* means to change the
> presentation of argv[0] is a far-too-gaping security hole.
>
> I have no idea what the order of magnitude for this effort might be.
> Managing a normally-null pointer that overrides the various facts if it is
> set, and is freed back into the kernel memory pool when the process exits,
> wouldn't be that tough. Intercepting whatever ps(1) (etc.) does to build
> the output might be non-trivial.
>
> Anyway, just a thought...
>
> Rob.

Well `ps` does the wrong thing so users need to do the wrong thing
to be compatible.

`ps` reads the command-line from the proc file-system. Obviously
the command-line can't be changed after a program starts executing
because it's something that was passed to the program before execution.
That's like making somebody un-pregnant.

So, hacks from hackers `setproctitle` comes to mind, replace some of
the command-line, usually overwriting the environment strings, with
some alien text.

With the current API, (Unix) the "'correct'" way to set a process
title is for everybody to agree upon an environment string like "TITLE=".
Then, if you want to change the process title, you change that string.
`ps` would then look for the "TITLE=" token and use the string after that.

However, it's unlikely that anybody will ever do that because of:

(1) Inertia.
(2) NIH.

PS it's trivial to modify `ps` to search for "TITLE=" and display
that, as well as the command-line strings IFF "TITLE=" is not found.
A new `ps` would make new/old compatibility work, but again, it's
unlikely that this 20 year-old problem will ever be fixed.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/