how to determine if a process has access to tty ports

John F Haugh II jfh at rpp386.cactus.org
Sat Jan 26 00:21:58 AEST 1991


In article <385 at bria> bria!mike (Michael Stefanik) writes:
>If you're worried about login processes, you could read /etc/utmp (but if
>this is a special device, I doubt that's the case); the slicker solution
>would be to read the namelist in /unix, and look through the proc table.
>A similar (but considerably slower) solution would be to popen() ps -t ttyxx
>and see if there is anything attached to it.  If you're looking for any
>process that has simply done an open() on the port, though, that's another
>story.

There are other ways - for example, BSD seems to come with an "ofiles"
command, and USG seems to come with a "fuser" command.

For example -

% fuser /dev/tty03
/dev/tty03:  2793 2794 2809 48 2404
% ofiles /dev/tty03
/dev/tty03	
User    	PID	Type	Command
jfh     	2793	f	sh            
jfh     	2794	f	sh            
jfh     	2809	f	vi            
jfh     	48	f	ksh           
jfh     	2404	f	rn            

take your pick.

It is possible under System V to "disconnect" yourself from the controlling
terminal in such a way that ps(1) does not report you as having the port
open, or you could close all your open files, but still be associated with
the port.  Here is an example of each.

% ofiles /dev/console
/dev/console	
User    	PID	Type	Command
sysinfo 	40	f	lload         
% ps -ft console
    UID   PID  PPID  C    STIME TTY  TIME COMMAND
   root    31     1  0 19:30:02 con  0:02 /usr/local/bin/utmpd 
% ps -fp 40
    UID   PID  PPID  C    STIME TTY  TIME COMMAND
   root    40     1  8 19:30:14   ?  0:03 /etc/lload 
-- 
John F. Haugh II                             UUCP: ...!cs.utexas.edu!rpp386!jfh
Ma Bell: (512) 832-8832                           Domain: jfh at rpp386.cactus.org
"13 of 17 valedictorians in Boston High Schools last spring were immigrants
 or children of immigrants"   -- US News and World Report, May 15, 1990



More information about the Comp.unix.questions mailing list