File:  [ELWIX - Embedded LightWeight unIX -] / libaitio / example / test_exec.c
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Sun Dec 15 22:57:20 2013 UTC (10 years, 6 months ago) by misho
Branches: MAIN
CVS tags: io7_4, io7_3, io7_2, io7_1, io7_0, io6_9, io6_8, IO7_3, IO7_2, IO7_1, IO7_0, IO6_9, IO6_8, IO6_7, HEAD
version 6.7

    1: #include <stdio.h>
    2: #include <unistd.h>
    3: #include <string.h>
    4: #include <errno.h>
    5: #include <aitio.h>
    6: #include <sys/wait.h>
    7: 
    8: 
    9: int
   10: main(int argc, char **argv)
   11: {
   12: 	prog_t *p;
   13: 	int f;
   14: 	int ret = 0;
   15: 	char str[BUFSIZ];
   16: 
   17: 	if (argc < 2)
   18: 		return 1;
   19: 
   20: 	p = io_progInit(argv[1], 3, 10);
   21: 	if (!p) {
   22: 		ELIBERR(io);
   23: 		return 2;
   24: 	} else if ((ret = io_progCheck(p, 0))) {
   25: 		printf("0.exited procs=%d\n", ret);
   26: 		goto end;
   27: 	} else {
   28: 		printf("wait for keystroke %p ", p);
   29: 		getchar();
   30: 	}
   31: 
   32: 	ret = io_progCheck(p, 0);
   33: 	if (ret) {
   34: 		printf("1.exited procs=%d\n", ret);
   35: 		goto end;
   36: 	}
   37: 
   38: 	printf("last=%d\n", array_Last(p->prog_fds));
   39: 
   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);
   48: 
   49: 	printf("wait for keystroke %p ", p);
   50: 	getchar();
   51: 
   52: again:
   53: 	f = io_progAttach(p, 0);
   54: 	printf("f=%d\n", f);
   55: 	write(f, "v\n", 1);
   56: 	memset(str, 0, sizeof str);
   57: 	while (read(f, str, sizeof str) > 0) {
   58: 		printf(">>> %s", str);
   59: 		memset(str, 0, sizeof str);
   60: 		read(0, str, sizeof str);
   61: 		if (*str == '.')
   62: 			break;
   63: 		write(f, str, strlen(str));
   64: 	}
   65: 	io_progDetach(p, f);
   66: 
   67: 	printf("(r) wait for keystroke %p ", p);
   68: 	if (getchar() == 'a')
   69: 		goto again;
   70: end:
   71: 	io_progDestroy(&p);
   72: 	return ret;
   73: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>