code wiki / (root) / nx_daemon_run.nx

nx_daemon_run.nx source

↩ module page · 20 lines · 1011 B

1// nx_daemon_run.nx -- sovereign detached LAUNCHER (no kill): spawn <elf> [args...] as a daemon that survives this 2// process (new session). The sovereign replacement for harness run_in_background. Composes nx_daemon's daemon_spawn. 3// Usage: nx_daemon_run <elf-path> [arg1 arg2 ...]. license_tier: ORIGINAL 4import "nx_daemon.nx" 5import "nx_gate.nx" 6 7func main(argc: i64, argv: *i64) -> i64 { 8 if argc < 2 { gw("usage: nx_daemon_run <elf-path> [args...]\n" as *u8); sys_exit(2); return 2 } 9 let elf: *u8 = argv[1] as *u8 10 // child argv = [elf, argv[2], argv[3], ..., 0] 11 let av: *i64 = sys_mmap(8 * (argc + 1)) as *i64 12 av[0] = elf as i64 13 var j: i64 = 1; var i: i64 = 2 14 while i < argc { av[j] = argv[i]; j = j + 1; i = i + 1 } 15 av[j] = 0 16 let pid: i64 = daemon_spawn(elf, av) 17 gw("nx_daemon_run: spawned " as *u8); gw(elf); gw(" detached pid=" as *u8); gn(pid); gw("\n" as *u8) 18 if pid <= 0 { gw(" SPAWN FAILED\n" as *u8); sys_exit(2); return 2 } 19 sys_exit(0); return 0 20}