#include "9term.h" int getchildwd(int pid, char *wdir, int bufn) { char path[256]; char cwd[256]; if(getcwd(cwd, sizeof cwd) < 0) return -1; snprint(path, sizeof path, "/proc/%d/cwd", pid); if(chdir(path) < 0) return -1; if(getcwd(wdir, bufn) < 0) return -1; chdir(cwd); return 0; } int getpts(int fd[], char *slave) { fd[1] = open("/dev/ptmx", ORDWR); if ((grantpt(fd[1]) < 0) || (unlockpt(fd[1]) < 0)) return -1; fchmod(fd[1], 0622); strcpy(slave, ptsname(fd[1])); fd[0] = open(slave, OREAD); return 0; }