svn commit: r330712 - head/bin/ps

Bruce Evans brde at optusnet.com.au
Sat Mar 10 06:35:59 UTC 2018


On Sat, 10 Mar 2018, Mike Karels wrote:

> ...
> Log:
>  Change ps(1) output width to unlimited if not interactive
> ...

> Modified: head/bin/ps/ps.1
> ==============================================================================
> --- head/bin/ps/ps.1	Fri Mar  9 23:37:19 2018	(r330711)
> +++ head/bin/ps/ps.1	Sat Mar 10 00:10:47 2018	(r330712)
> @@ -101,6 +101,14 @@ The default output format includes, for each process,
> controlling terminal, state, CPU time (including both user and system time)
> and associated command.
> .Pp
> +If the
> +.Nm
> +process is associated with a terminal, the default output width is that of the
> +terminal; otherwise the output width is unlimited.

It is unclear how a process is assocated with a terminal and thus what this
width is.

For ps, unlike for most programs, a process is associated with a terminal
iff any of the 3 standard file descriptors is a terminal that supports the
TIOCGWINSZ ioctl, and the width of the preferred one is not 0.  The
preferred one is the first of STDOUT_FILENO, STDERR_FILENO and STDIN_FILENO
that supports the ioctl.

BUGS: if the first one somehow has width 0, then the process is considered
as not being associated with a terminal even of a later one has a nonzero
width.

> ...
> Modified: head/bin/ps/ps.c
> ==============================================================================
> --- head/bin/ps/ps.c	Fri Mar  9 23:37:19 2018	(r330711)
> +++ head/bin/ps/ps.c	Sat Mar 10 00:10:47 2018	(r330712)
> @@ -202,6 +202,11 @@ main(int argc, char *argv[])
> 	 * any of stdout, stderr, or stdin is a terminal.  The intent
> 	 * is that "ps", "ps | more", and "ps | grep" all use the same
> 	 * default line length unless -w is specified.
> +	 *
> +	 * If not interactive, the default length was traditionally 79.
> +	 * It has been changed to unlimited.  This is mostly for the
> +	 * benefit of non-interactive scripts, which arguably should
> +	 * use -ww, but is compatible with Linux.
> 	 */

This belongs in the HOSTORY section of the man page, with version info
for the change.

Bruce


More information about the svn-src-head mailing list