// This code sample demonstrates starting an external process from Frink, // capturing its output, (including translating Unicode characters // from the operating system's encoding,) waiting for it to complete, and // capturing its exit status. Many of these steps are optional, depending // on what you're trying to do. // Use Java introspection to get the Runtime object which will be used to // create external processes. runtime = callJava["java.lang.Runtime", "getRuntime", [] ] // Execute the specified command. Note that there are other versions of // the Runtime.exec[] method which allow you to pass the working directory and // environment variables, if you need to. proc = runtime.exec["/bin/ls -la"] // Get the input stream (the process's output) instream = proc.getInputStream[] // The following lines wrap the InputStream with an InputStreamReader which // will properly decode Unicode characters in the system's default encoding. // If the default encoding is not detected, you may need to specify it here. reader = newJava["java.io.InputStreamReader", [instream]] // Wrap the reader in a BufferedReader so we can get a readLine function. bReader = newJava["java.io.BufferedReader", [reader, 32768]] // Read the output from the process and print it. while (line = bReader.readLine[]) println[line] // Wait for the external process to complete proc.waitFor[] // Print the exit value of the process. println["Exit value is " + proc.exitValue[]]