xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/setpgid.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier #include "lib.h"
23e12c5d1SDavid du Colombier #include <unistd.h>
3*219b2ee8SDavid du Colombier #include <stdio.h>
4*219b2ee8SDavid du Colombier #include <errno.h>
53e12c5d1SDavid du Colombier #include "sys9.h"
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier int
setpgid(pid_t pid,pid_t pgid)83e12c5d1SDavid du Colombier setpgid(pid_t pid, pid_t pgid)
93e12c5d1SDavid du Colombier {
10*219b2ee8SDavid du Colombier 	int n, f;
11*219b2ee8SDavid du Colombier 	char buf[50], fname[30];
12*219b2ee8SDavid du Colombier 
13*219b2ee8SDavid du Colombier 	if(pid == 0)
14*219b2ee8SDavid du Colombier 		pid = getpid();
15*219b2ee8SDavid du Colombier 	if(pgid == 0)
16*219b2ee8SDavid du Colombier 		pgid = getpgrp();
17*219b2ee8SDavid du Colombier 	sprintf(fname, "/proc/%d/noteid", pid);
18*219b2ee8SDavid du Colombier 	f = open(fname, 1);
19*219b2ee8SDavid du Colombier 	if(f < 0) {
20*219b2ee8SDavid du Colombier 		errno = ESRCH;
213e12c5d1SDavid du Colombier 		return -1;
223e12c5d1SDavid du Colombier 	}
23*219b2ee8SDavid du Colombier 	n = sprintf(buf, "%d", pgid);
24*219b2ee8SDavid du Colombier 	n = write(f, buf, n);
25*219b2ee8SDavid du Colombier 	if(n < 0)
26*219b2ee8SDavid du Colombier 		_syserrno();
27*219b2ee8SDavid du Colombier 	else
28*219b2ee8SDavid du Colombier 		n = 0;
29*219b2ee8SDavid du Colombier 	close(f);
30*219b2ee8SDavid du Colombier 	return n;
31*219b2ee8SDavid du Colombier }
32