1 #define _XOPEN_SOURCE 600
11 * How I use this program:
12 * - on terminal 1: ./ptytest | hexdump -C
13 * - on root terminal: rmmod slcan; insmod ./slcan.ko; ( sleep 1; ip l set up dev slcan0) & slcan_attach -w /dev/pts/12
19 master_fd = posix_openpt(O_RDWR | O_NOCTTY);
21 error(1, errno, "posix_openpt");
22 if (grantpt(master_fd) == -1)
23 error(1, errno, "grantpt");
24 if (unlockpt(master_fd) == -1)
25 error(1, errno, "unlockpt");
26 fprintf(stderr, "%s\n", ptsname(master_fd));
28 struct pollfd fds[2] = {
29 { .fd = 0, .events = POLLIN },
30 { .fd = master_fd, .events = POLLIN },
34 int ret = poll(fds, 2, -1);
37 error(1, errno, "poll");
39 ret = read(fds[0].fd, buffer, sizeof(buffer));
40 if (ret == -1) error(1, errno, "read(stdin)");
41 ret = write(fds[1].fd, buffer, ret);
42 if (ret == -1) error(1, errno, "write(tty)");
45 ret = read(fds[1].fd, buffer, sizeof(buffer));
46 if (ret == -1) error(1, errno, "read(tty)");
47 ret = write(1, buffer, ret);
48 if (ret == -1) error(1, errno, "write(stdout)");