示例#1
0
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;
}
示例#2
0
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);
}