1 #include "lib.h" 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <errno.h> 5 #include "sys9.h" 6 7 int 8 setpgid(pid_t pid, pid_t pgid) 9 { 10 int n, f; 11 char buf[50], fname[30]; 12 13 if(pid == 0) 14 pid = getpid(); 15 if(pgid == 0) 16 pgid = getpgrp(); 17 sprintf(fname, "/proc/%d/noteid", pid); 18 f = open(fname, 1); 19 if(f < 0) { 20 errno = ESRCH; 21 return -1; 22 } 23 n = sprintf(buf, "%d", pgid); 24 n = write(f, buf, n); 25 if(n < 0) 26 _syserrno(); 27 else 28 n = 0; 29 close(f); 30 return n; 31 } 32