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}