people - fetch a structure containing all ttys, whose owner behaves like a human
#include <sys/people.h>
#include <asr.h>
int people (struct ppl_tty **ttys);
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 prgp_leader;
};
On success people returns the number of elements in ttys , on
failure it returns -1 and errno is set to an appropriate value.
- 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.
#include <sys/pople.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... */
}
}
This man page was written by Ingvar Mattsson, as a contribution to the a.s.r man
page collection.