diff --git a/WEGA/contrib/ingres/dbs/src/sys/p_slave b/WEGA/contrib/ingres/dbs/src/sys/p_slave new file mode 100755 index 0000000..fdcf047 Binary files /dev/null and b/WEGA/contrib/ingres/dbs/src/sys/p_slave differ diff --git a/WEGA/contrib/ingres/dbs/src/sys/p_slave.c b/WEGA/contrib/ingres/dbs/src/sys/p_slave.c new file mode 100644 index 0000000..515e19b --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/sys/p_slave.c @@ -0,0 +1,50 @@ +# include + +# define SIG 15 + +char c; + +catch() +{ + putchar(c); + fflush(stdout); +} + +main(argc, argv) +int argc; +char *argv[]; +{ + register int i; + register int pid; + char buf[BUFSIZ]; + + setbuf(stdout, buf); + c = *argv[1]; + pid = getpid(); + printf("\nstart %c of child %d\n", c, pid); + fflush(stdout); + + if (ptrace(0) < 0) + { + printf("child %d dies via ptrace\n", pid); + fflush(stdout); + exit(1); + } + + if (signal(SIG, catch) < 0) + { + printf("child %d dies via signal\n", pid); + fflush(stdout); + exit(2); + } + + for (i = 0; ; ) + { + kill(pid, SIG); + printf("\ngo %c | rc = %d\n", c, i); + fflush(stdout); + for (i = 1; i < 2000; i++) + c = c; + kill(pid, SIG); + } +}