@include @define test1() { @local ctl, mux, ns, as, dom; mux = mkctlmux_local(); ctl = mux.launch(["./sig" ], 0); as = ctl.mem(); ns = ctl.ns(); dom = mkdom(ns, as); dom.trace(ctlmux`Esignal, @lambda(ctl, sig){ printf("task %d received signal %d\n", ctl.id, sig); return nil; }); dom.xcont(); mux.run(); } @define test2() { @local ctl, mux, ns, as, dom, n; mux = mkctlmux_local(); ctl = mux.launch(["./sig" ], 0); as = ctl.mem(); ns = ctl.ns(); dom = mkdom(ns, as); n = 0; dom.trace(ctlmux`Esignal, @lambda(ctl, sig){ printf("task %d received signal %d\n", ctl.id, sig); n++; if(n > 5) dom.trace(ctlmux`Esignal, nil); return nil; }); dom.xcont(); mux.run(); } if(length(args) == 1){ test1(); test2(); }else if(length(args) == 2){ switch(args[1]){ case "1": return test1(); case "2": return test2(); default: error("no such test %a", args[1]); } }else error("usage: %s [] | %s ", args[0]);