On Mon, Mar 08, 2004 at 09:40:21PM -0500, Garance A Drosihn wrote: > This topic may have come up before, a long time ago, and I just > missed it. If so, apologies for the repeat. > > On stable, if you say 'ps -p <n>', and there is no process '<n>', > then you get the header-line from 'ps' and nothing else. The > command-status is set to indicate failure. > > On -current, the same command gives you the error message: > > ps: kvm_getprocs: No such process > > and you get no header line. Other OS's also give you the header > line and no special error message. > > I think this behavior in current is an unplanned side-effect of > the change in revision 1.46 of > http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libkvm/kvm_proc.c > > where that was fixing a side-effect of a fix in revision 1.60 > of malloc.c. > I don't think that rev. 1.46 is the problem. The sysctl is what returns ESRCH if no process exists. In RELENG_4, it returns 0. See sys/kern/kern_proc.c:sysctl_kern_proc(), the handing of KERN_PROC_PID. The semantics has been changed in rev. 1.192. > In some other OS's, 'ps' behaves the way it does for us in -stable. > Looking at SUSv3, it's not clear to me if either behavior is > preferred. > > Should 'ps' in this situation behave like it does in -stable? Or > is this a change that we deliberately wanted to make in -current? > I would be willing to change 'ps' if people prefer the earlier > behavior, but I'll leave it alone if this was an intentional change. > I believe that the current behavior of KERN_PROC_PID is correct. I personally don't care how ps(1) should behave if no PID exists. Cheers, -- Ruslan Ermilov FreeBSD committer ru_at_FreeBSD.org
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:46 UTC