---
name: "people"
section: "2fun"
platform: "linux"
package: "asr-manpages"
version: "1.3-6"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/people/2fun"
---

# people(2fun)

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.
