man people () - fetch a structure containing all ttys, whose owner behaves like a human
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.