Process Module
Import using: use process
Process Identification
process.pid()- Current process ID.process.ppid()- Parent process ID.
use process
print("PID: " + process.pid())
print("PPID: " + process.ppid())
Process Control
process.exit(code)- Terminate script with exit code.process.kill(pid, signal?)- Send signal to process (default SIGTERM=15).
use process
# process.exit(0) # terminates immediately
# process.kill(12345, 15) # send SIGTERM
Working Directory
process.cwd()- Current working directory path.process.chdir(path)- Change current working directory.
use process
let cwd = process.cwd()
print(cwd)
process.chdir("..")
print(process.cwd())
process.chdir(cwd)
Command Execution
process.exec(command)- Execute shell command. Returns Map with "stdout", "stderr", "exit_code".
use process
let result = process.exec("echo Hello")
print("Exit: " + result["exit_code"])
print("Out: " + result["stdout"])
CLI Arguments & Script Location
process.args()- Command-line arguments (array of strings).process.scriptDir()- Directory of the currently executing script.
use process
print(process.scriptDir())
print(str(process.args()))
Asynchronous Spawning (Bidirectional)
process.spawn(command)- Spawn background command, returns a Map:{"read": R, "write": W, "err": E, "pid": PID}.process.read(handle)- Non-blocking read from a process handle (e.g.child["read"]orchild["err"]).process.write(handle, text)- Write text to process's stdin pipe. ReturnsTrueon success.process.close(handle)- Close process handle. Use this to send EOF to stdin, or to release file descriptors.process.wait(pid)- Wait for the background process to exit and return its exit code.
use process
let child = process.spawn("sort")
# Write data to the process's standard input
process.write(child["write"], "banana\napple\ncherry\n")
process.close(child["write"]) # Signal EOF
# Read from standard output
let output = ""
while True
let chunk = process.read(child["read"])
if isNull(chunk)
break
end
output = output + chunk
end
process.close(child["read"])
process.close(child["err"])
let code = process.wait(child["pid"])
print("Sorted Output:\n" + output)
print("Exit: " + str(code))