NAME¶
people - fetch a structure containing all ttys, whose owner behaves like a human
SYNOPSIS¶
#include <sys/people.h>
#include <asr.h>
int people (struct ppl_tty **ttys);
DESCRIPTION¶
The
people function fetches a short description of every tty, whose
coupled process behaves as an actual human.
It returns a newly malloc'ed array with just enough elements to contain all
elements needed for this.
The
struct ppl_tty is declared as:
struct ppl_tty {
char tty_path[MAX_PATH_LENGTH];
int is_erratic;
int uses_jobcontrol;
int is_amoron;
int is_aluser;
int has_aclue;
pid_t pgrp_leader;
};
RETURN VALUES¶
On success
people returns the number of elements in
ttys , on
failure it returns
-1 and
errno is set to an appropriate value.
ERRORS¶
- ENOENT
- There are no human-behavioured processes on the system
- EBUSY
- The kernel is busy and will not stand this silly behaviour.
Caution to call people again, from the same process, as the kernel
might kill it right away.
- ENODEV
- See ENOENT above.
- EUSERS
- Too many of the people found were lusers. The cut-off for
this error is system dependent, but is usually about 3.
EXAMPLE¶
#include <sys/people.h>
#include <asr.h>
#include <signal.h>
int
main (int argc, char **argv)
{
struct ppl_tty **ttys;
int rv,c;
rv=people(ttys);
if (rv!=-1) {
for (c=0;c<rv;c++)
if ((ttys[c].is_amoron)||(ttys[c].is_aluser)) {
kill(-(ttys[c].pgrp_leader),SIGKILL);
}
} else {
; /* Handle errors in a graceful way... */
}
}
AUTHOR¶
This man page was written by Ingvar Mattsson, as a contribution to the a.s.r man
page collection.