extern int link(const char* fp, const char* tp) { int r; int oerrno; char fb[PATH_MAX]; char tb[PATH_MAX]; oerrno = errno; if ((r = syslink(fp, tp)) && errno == ENOENT && execrate(fp, fb, sizeof(fb), 1)) { if (execrate(tp, tb, sizeof(tb), 1)) tp = tb; errno = oerrno; r = syslink(fb, tp); } return r; }
int main(int ac, char **av) { union syslink_info_all info; int fd1; int fd2; bzero(&info, sizeof(info)); if (syslink(SYSLINK_CMD_NEW, &info.head, sizeof(info)) < 0) { perror("syslink"); exit(1); } printf("fds %d %d\n", info.cmd_new.fds[0], info.cmd_new.fds[1]); if (fork() == 0) { reader(info.cmd_new.fds[0]); } else { writer(info.cmd_new.fds[1]); } while (wait(NULL) > 0) ; return(0); }