[comp.unix.internals] how to determine if a process has access to tty ports

coleman@cam.nist.gov (Sean Sheridan Coleman X5672) (01/23/91)

I want to be able to determine if another process has control
of an RS232 port on a Alm Board on a Sun4. I am writing a 
program to gather data from a device that is connected via
RS-232. I want to deny access to the program if another program
is accessing the port currently. 

I want to know (1) how to tell if a port is being used
currently for a login port. ie.. some has log in using the port
(2) how to tell if a process has control of a port for out going
communication such as kermit?

I use a simplistic tty driver for comunicating to the  ports.
Is there something I should add to the driver code to allow
other programs to do what I have asked about above?

Thanks

Sean Coleman
NIST
coleman@bldrdoc.gov

mike (Michael Stefanik) (01/23/91)

In article <6763@fs1.cam.nist.gov> cam.nist.gov!coleman (Sean Sheridan Coleman X5672) writes:
:I want to be able to determine if another process has control
:of an RS232 port on a Alm Board on a Sun4. I am writing a 
:program to gather data from a device that is connected via
:RS-232. I want to deny access to the program if another program
:is accessing the port currently. 

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.
-- 
Michael Stefanik, Systems Engineer (JOAT), Briareus Corporation
UUCP: ...!uunet!bria!mike
--
technoignorami (tek'no-ig'no-ram`i) a group of individuals that are constantly
found to be saying things like "Well, it works on my DOS machine ..."