System
This module provides functions for interacting with the system environment, such as external processes, or environment variables.
Usage¶
Accessing program arguments¶
Function args
allows the program to access the process arguments, so for example running a script such as:
yona ./script.yona -h
would result in:
["-h"] = System::args
Getting PID¶
Function pid
returns the PID of the running process, as an integer number.
pid = System::pid
Getting environment variable¶
Function get_env
returns an environment variable as a string or a ()
if such environment variable is not present.
yona_path = System::get_env "YONA_PATH"
Running an external process¶
Function run
is used to run an external process. It takes a sequence of strings, of which the first is the process to run and following strings are arguments for that process. The process will be executed in a non-blocking matter, and the result of this function is a triple of (exit_code, std_out, std_err)
, where * exit_code
is the exit code of the executed process * std_out
is captured standard output of the executed process * std_err
is captured standard error output of the executed process
Example:
System::run ["echo", "hello world"]
Running a pipeline of external process¶
Function pipeline
is used to run a pipeline of external processes. The process will be executed in a non-blocking matter, and the result of this function is a triple of (exit_code, std_out, std_err)
, where * exit_code
is the exit code of the last executed process * std_out
is captured standard output of the last executed process * std_err
is captured standard error output of the last executed process
Processes are linked by their standard input and output streams.
Example which will reverse a string and produce "olleh"
as a result:
System::pipeline [
["echo", "hello"],
["rev"]
]
Locating the language home¶
Function language_home
returns a string representing an absolute path to the home directory of the language installation within the GraalVM.
For example:
System::language_home |> println
could print something like:
/Library/Java/JavaVirtualMachines/graalvm-ee-java11-20.1.0/Contents/Home/languages/yona