Message: 1
Date: Mon, 19 Oct 2015 00:09:17 -0500
From: Rob Landley <[email protected]>
To: [email protected]
Subject: [Toybox] ps -t is cheating.
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8

So posix says this:

-t  termlist
   Write information for processes associated with terminals given in
   termlist. The application shall ensure that the termlist is a single
   argument in the form of a <blank> or <comma>-separated list. Terminal
   identifiers shall be given in an implementation-defined format. [XSI]
   [Option Start]  On XSI-conformant systems, they shall be given in one
   of two forms: the device's filename (for example, tty04) or, if the
   device's filename starts with tty, just the identifier following the
   characters tty (for example, "04" ). [Option End]

And once again posix is somewhere back before the 1980's because
pseudo-terminals do not start with "/dev/tty". In the case of linux,
they've been /dev/pts/12 since, apparently, 1998.

The ps man page says:

   -t ttylist
        Select by tty.  This selects the processes associated with the
        terminals given in ttylist.  Terminals (ttys, or screens for
        text output) can be specified in several forms: /dev/ttyS1,
        ttyS1, S1.  A plain "-" may be used to select processes not
        attached to any terminal.

Which is, once again, outright lying, because "-t 41" matches pts/41 but
-t 5 does _not_ match tty5. You have to say "-t tty5" to get the getty
instance on there.

You just brought an old nightmare back to the surface...

Try -t 05, if setup 'properly' you should get tty05 and that nowadays should be equating to tty5's inode / character settings.

My first Mainframes (1970's) had tty0 to ttyf for systems consoles I/O ONLY, and tty00 to ttyff for user terminals. The problem was of course cost for the extra user i/o cards so any tty above tty3 were often assigned to users terminals and the relevant code 'fudged' to remove the console level access and assign user inodes, which in turn fudged other bits of code....et al...


Meanwhile procutils "ps -t pts/41" works as does "ps -t pts/../tty5"
which is just _creepy_ and I'm not doing that bit. And -tty S0 is of
course /dev/ttyS0 not /dev/pts/S0.

I pine for a spec that means something,

Rob

P.S.  Once again, the hard part is writing help text so ps --help can
explain the expected behavior succinctly. Yeah, I can do that, but how
do I explain it in a way that makes it sound intentional: -t ## is a pts
(unless maybe there isn't one? Does it fall back to tty5 if there's no
pts5? Hard to test right now because I've got /dev/pts/68 but only
/dev/tty63). Grrr. STOP TRYING TO BE CLEVER IN WAYS YOU DON'T EXPLAIN TO
YOUR USERS IN THE MAN PAGE. Right special case "-t number" to be pts/
instead of tty, accept pts/ to _not_ mean implicit tty prefix...



_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to