shithub: mc

ref: 74d91a0021de012908cfdb35fb61a1473a376130
dir: /lib/thread/test/do.myr/

View raw version
use std
use thread

const main = {
	match std.espork(["/bin/echo", "hello"][:])
	| `std.Err e:
		std.fatal("could not spork\n")
	| `std.Ok (pid, in, out, err):
		std.close(in)
		var o = thread.do({;-> std.fslurp(out)})
		var e = thread.do({;-> std.fslurp(err)})
		var w = std.wait(pid)

		match w
		| `std.Wsuccess:	/* ok */
		| bad:	std.fatal("bad wait: {}\n", bad)
		;;

		match thread.futget(o)
		| `std.Ok "hello\n":	/* ok */
		| bad:	std.fatal("bad out: {}\n", bad)
		;;

		match thread.futget(e)
		| `std.Ok "":	/* ok */
		| bad:	std.fatal("bad err: {}\n", bad)
		;;
	;;
}