Annotation of libaitio/example/test_exec.c, revision 1.1.2.7
1.1.2.1 misho 1: #include <stdio.h>
1.1.2.7 ! misho 2: #include <unistd.h>
! 3: #include <string.h>
! 4: #include <errno.h>
1.1.2.1 misho 5: #include <aitio.h>
1.1.2.3 misho 6: #include <sys/wait.h>
1.1.2.1 misho 7:
8:
9: int
10: main(int argc, char **argv)
11: {
1.1.2.2 misho 12: prog_t *p;
1.1.2.7 ! misho 13: FILE *f;
1.1.2.4 misho 14: int ret = 0;
1.1.2.7 ! misho 15: char str[BUFSIZ];
1.1.2.2 misho 16:
1.1.2.1 misho 17: if (argc < 2)
18: return 1;
19:
1.1.2.2 misho 20: p = io_progInit(argv[1], 3, 10);
21: if (!p) {
22: ELIBERR(io);
23: return 2;
1.1.2.4 misho 24: } else if ((ret = io_progCheck(p))) {
25: printf("0.exited procs=%d\n", ret);
26: goto end;
1.1.2.2 misho 27: } else {
28: printf("wait for keystroke %p ", p);
29: getchar();
30: }
31:
1.1.2.4 misho 32: ret = io_progCheck(p);
33: if (ret) {
34: printf("1.exited procs=%d\n", ret);
35: goto end;
36: }
1.1.2.3 misho 37:
1.1.2.5 misho 38: printf("last=%d\n", array_Last(p->prog_fds));
39:
1.1.2.6 misho 40: ret = io_progGrow(p, 8);
41: printf("+grow_progs=%d\n", ret);
42:
43: printf("wait for keystroke %p ", p);
44: getchar();
45:
46: ret = io_progVacuum(p, 5);
47: printf("+vacuum_progs=%d\n", ret);
1.1.2.5 misho 48:
49: printf("wait for keystroke %p ", p);
50: getchar();
1.1.2.7 ! misho 51:
! 52: again:
! 53: f = io_progAttach(p);
! 54: printf("f=%p\n", f);
! 55: while (read(fileno(f), str, sizeof str) > 0) {
! 56: printf(">>> %s", str);
! 57: fgets(str, sizeof str, stdin);
! 58: if (*str == '.')
! 59: break;
! 60: write(fileno(f), str, strlen(str));
! 61: }
! 62: io_progDetach(p, f);
! 63:
! 64: printf("wait for keystroke %p ", p);
! 65: if (getchar() == 'a')
! 66: goto again;
1.1.2.4 misho 67: end:
1.1.2.2 misho 68: io_progDestroy(&p);
1.1.2.4 misho 69: return ret;
1.1.2.1 misho 70: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>