summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/OR_USING_C/10.1.c
blob: 999d4d344954d760b56ca1da9d6b3975f5694d9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <sys/ioctl.h>
#include "10.h"

int MyPid;        /* the shell's process id       */
int MyPgrp;       /* the shell's process group    */
int TermPgrp;     /* the terminal's process group */

setup()
{
    /*
     * Obtain shell's process id.
     */
    MyPid = getpid();

    /*
     * Just use pid for process group.  This is
     * not a requirement, just convenient.  Other
     * ways of picking a process group can be used.
     */
    MyPgrp = MyPid;
    TermPgrp = MyPid;

    /*
     * Set the shell's process group.
     */
    if (setpgrp(MyPid, MyPgrp) < 0) {
        perror("setpgrp");
        exit(1);
    }

    /*
     * Set the terminal's process group.
     */
    if (ioctl(1, TIOCSPGRP, &MyPgrp) < 0) {
        perror("ioctl");
        exit(1);
    }
}