====== Process ====== This object allows you to start and manage a process. (program) ===== Functions ===== ==== Process ==== Constructor function. === Syntax === var myObject = new Process(); var myObject = new Process(parameters); === Arguments === - parameters - (object) the parameters * workingDirectory - (string) the working directory * processChannelMode - ([[#processchannelmode|ProcessChannelMode]]) the process's channel mode * readChannel - ([[#processchannel|ProcessChannel]]) the process's read channel * onError - ([[#onError|onError]]) called when an error has occured * onFinished - ([[#onFinished|onFinished]]) called when the process has finished * onReadyReadStandardError - ([[#onReadyReadStandardError|onReadyReadStandardError]]) called when the process has data on the standard error channel * onReadyReadStandardOutput - ([[#onReadyReadStandardOutput|onReadyReadStandardOutput]]) called when the process has data on the standard output channel * onStarted - ([[#onStarted|onStarted]]) called when the process has started * onStateChanged - ([[#onStateChanged|onStateChanged]]) called when the process's state has changed === Example === var myObject = new Process(); var myObject = new Process({ workingDirectory: "/home/user", onStarted: function() { Console.print("Started!"); }, onFinished: function() { Console.print("Finished!"); } }); ==== list ==== Returns an array of [[en:code:core:processhandle|ProcessHandle]] linked to all running processes. === Syntax === Process.list(); === Returns === * (array) an array of [[en:code:core:processhandle|ProcessHandle]] linked to all running processes ==== thisProcess ==== Returns a [[en:code:core:processhandle|ProcessHandle]] linked to the Actionaz process. === Syntax === Process.thisProcess(); === Returns === * (array) a [[en:code:core:processhandle|ProcessHandle]] linked to the Actionaz process ==== startDetached ==== Starts a process in detached mode and returns a [[en:code:core:processhandle|ProcessHandle]] linked to it. You will have lesser control on the process than in attached mode, but it will be independent of the current execution. === Syntax === Process.startDetached(filename); Process.startDetached(filename, parameters); Process.startDetached(filename, parameters, workingDirectory); === Arguments === - filename - (string) the filename/command of the process to start - parameters - (array) an array of parameters - workingDirectory - (string) the working directory === Returns === * (array) a [[en:code:core:processhandle|ProcessHandle]] linked to the started process === Exceptions === * (FilenameError) invalid filename * (StartProcessError) unable to start the process ===== Methods ===== ==== handle ==== Returns a [[en:code:core:processhandle|ProcessHandle]] linked to the started process === Syntax === myObject.handle(); === Returns === * ([[en:code:core:processhandle|ProcessHandle]]) a [[en:code:core:processhandle|ProcessHandle]] linked to the started process ==== id ==== Returns the process id of the started process. === Syntax === myObject.id(); === Returns === * (integer) the process id of the started process ==== start ==== Starts the process. === Syntax === myObject.start(filename); myObject.start(filename, parameters); myObject.start(filename, parameters, openMode); === Arguments === - filename - (string) the filename/command of the process to start - parameters - (array) an array of parameters - openMode - ([[#openmode|OpenMode]]) the open mode to use (default: read and write) === Returns === * (Process) this Process === Exceptions === * (FilenameError) invalid filename ==== state ==== Returns the state of the started process. === Syntax === myObject.state(); === Returns === * ([[#processstate|ProcessState]]) the state of the started process ==== error ==== Returns the error state of the started process. === Syntax === myObject.error(); === Returns === * ([[#processerror|ProcessError]]) the error state of the started process ==== exitCode ==== Returns the process's exit code. === Syntax === myObject.exitCode(); === Returns === * (integer) the process's exit code ==== exitStatus ==== Returns the process's exit status. === Syntax === myObject.exitStatus(); === Returns === * ([[#exitstatus|ExitStatus]]) the process's exit status ==== readError ==== Returns the content of the standard error output as a [[en:code:core:rawdata|RawData]]. === Syntax === myObject.readError(); === Returns === * ([[en:code:core:rawdata|RawData]]) the content of the standard error output as a [[en:code:core:rawdata|RawData]] ==== read ==== Returns the content of the standard output as a [[en:code:core:rawdata|RawData]]. === Syntax === myObject.read(); === Returns === * ([[en:code:core:rawdata|RawData]]) the content of the standard output as a [[en:code:core:rawdata|RawData]] ==== readErrorText ==== Returns the content of the standard error output as text. === Syntax === myObject.readErrorText(); myObject.readErrorText(encoding); === Arguments === - encoding - ([[en:code:core:global#encoding|Encoding]]) the encoding to use === Returns === * (string) the content of the standard error output as text ==== readText ==== Returns the content of the standard output as text. === Syntax === myObject.readText(); myObject.readText(encoding); === Arguments === - encoding - ([[en:code:core:global#encoding|Encoding]]) the encoding to use === Returns === * (string) the content of the standard output as text ==== atEnd ==== Returns true if the process is not running and if no data can be read. === Syntax === myObject.atEnd(); === Returns === * (boolean) true if the process is not running and if no data can be read ==== bytesAvailable ==== Returns the number of bytes that can be read. === Syntax === myObject.bytesAvailable(); === Returns === * (integer) the number of bytes that can be read ==== bytesToWrite ==== Returns the number of bytes that are still to be written. === Syntax === myObject.bytesToWrite(); === Returns === * (integer) the number of bytes that are still to be written ==== canReadLine ==== Returns true if a line can be read. === Syntax === myObject.canReadLine(); === Returns === * (boolean) true if a line can be read ==== write ==== Writes some data to the process. === Syntax === myObject.write(data); === Arguments === - data - (mixed) the data to write === Returns === * (Process) this Process ==== writeText ==== Writes text to the process. === Syntax === myObject.writeText(text, encoding); === Arguments === - text - (string) the text to write - encoding - ([[en:code:core:global#encoding|Encoding]]) the encoding to use === Returns === * (Process) this Process ==== setWorkingDirectory ==== Sets the working directory. This only works when the process is not already started. === Syntax === myObject.setWorkingDirectory(workingDirectory); === Arguments === - workingDirectory - (string) the text to write === Returns === * (Process) this Process ==== setProcessChannelMode ==== Sets process's channel mode. This only works when the process is not already started. === Syntax === myObject.setProcessChannelMode(channelMode); === Arguments === - channelMode - ([[#processchannelmode|ProcessChannelMode]]) the process's channel mode === Returns === * (Process) this Process ==== setEnvironment ==== Sets the process's environment variables. This only works when the process is not already started. === Syntax === myObject.setEnvironment(environment); === Arguments === - environment - (object) the process's environment variable === Returns === * (Process) this Process === Example === myObject.setEnvironment({ PATH: "c:\\;c:\\path", MYVAR: "hello" }); ==== updateEnvironment ==== Updates the process's environment variables. This only works when the process is not already started. === Syntax === myObject.updateEnvironment(environment); === Arguments === - environment - (object) the process's environment variable === Returns === * (Process) this Process === Example === myObject.updateEnvironment({ PATH: "c:\\;c:\\path", MYVAR: "hello" }); ==== setReadChannel ==== Sets process's read channel. === Syntax === myObject.setReadChannel(channel); === Arguments === - channel - ([[#processchannel|ProcessChannel]]) the process's read channel === Returns === * (Process) this Process ==== setStandardErrorFile ==== Sets the standard error file. === Syntax === myObject.setStandardErrorFile(fileName); myObject.setStandardErrorFile(fileName, openMode); === Arguments === - fileName - (string) the filename - channel - ([[#openmode|OpenMode]]) the file's open mode (default: Truncate) === Returns === * (Process) this Process ==== setStandardInputFile ==== Sets the standard input file. === Syntax === myObject.setStandardInputFile(fileName); === Arguments === - fileName - (string) the filename === Returns === * (Process) this Process ==== setStandardOutputFile ==== Sets the standard output file. === Syntax === myObject.setStandardOutputFile(fileName); myObject.setStandardOutputFile(fileName, openMode); === Arguments === - fileName - (string) the filename - channel - ([[#openmode|OpenMode]]) the file's open mode (default: Truncate) === Returns === * (Process) this Process ==== setStandardOutputProcess ==== Sets the standard output process. === Syntax === myObject.setStandardOutputFile(process); === Arguments === - process - (Process) the output process === Returns === * (Process) this Process === Exceptions === * (InvalidProcessError) invalid process ==== waitForFinished ==== Freezes the execution until the process has finished. === Syntax === myObject.waitForFinished(waitTime); myObject.waitForFinished(); === Arguments === - waitTime - (integer) the time to wait (milliseconds, default: 30000) === Returns === * (Process) this Process === Exceptions === * (WaitForFinishedError) wait for finished failed ==== waitForStarted ==== Freezes the execution until the process has started. === Syntax === myObject.waitForStarted(waitTime); myObject.waitForStarted(); === Arguments === - waitTime - (integer) the time to wait (milliseconds, default: 30000) === Returns === * (Process) this Process === Exceptions === * (WaitForStartedError) wait for started failed ==== waitForBytesWritten ==== Freezes the execution until the data has been written. === Syntax === myObject.waitForBytesWritten(waitTime); myObject.waitForBytesWritten(); === Arguments === - waitTime - (integer) the time to wait (milliseconds, default: 30000) === Returns === * (Process) this Process === Exceptions === * (WaitForBytesWrittenError) wait for bytes written failed ==== waitForReadyRead ==== Freezes the execution until data is available. === Syntax === myObject.waitForReadyRead(waitTime); myObject.waitForReadyRead(); === Arguments === - waitTime - (integer) the time to wait (milliseconds, default: 30000) === Returns === * (Process) this Process === Exceptions === * (WaitForReadyReadError) wait for ready read failed ==== close ==== Tries to close the process gracefully. === Syntax === myObject.close(); === Returns === * (Process) this Process ==== kill ==== Kills the process. === Syntax === myObject.kill(); === Returns === * (Process) this Process ==== terminate ==== Terminates the process. === Syntax === myObject.terminate(); === Returns === * (Process) this Process ===== Events ===== ==== onError ==== Called when an error occured. === Syntax === myObject.onError = function(processError) {}; === Arguments === - processError - ([[#processerror|ProcessError]]) the process error that has occured === Example === myObject.onError = function(processError) { //Event action }; ==== onFinished ==== Called when the process has finished. === Syntax === myObject.onFinished = function(exitCode, exitStatus) {}; === Arguments === - exitCode - (integer) the process's exit code - exitStatus - ([[#exitstatus|ExitStatus]]) the process's exit status === Example === myObject.onFinished = function(exitCode, exitStatus) { //Event action }; ==== onReadyReadStandardError ==== Called when there is data available on the standard error output. === Syntax === myObject.onReadyReadStandardError = function() {}; === Example === myObject.onReadyReadStandardError = function() { //Event action }; ==== onReadyReadStandardOutput ==== Called when there is data available on the standard output. === Syntax === myObject.onReadyReadStandardOutput = function() {}; === Example === myObject.onReadyReadStandardOutput = function() { //Event action }; ==== onStarted ==== Called when the process has started executing. === Syntax === myObject.onStarted = function() {}; === Example === myObject.onStarted = function() { //Event action }; ==== onStateChanged ==== Called when the process's state has changed. === Syntax === myObject.onStateChanged = function(newState) {}; === Arguments === - newState - ([[#processstate|ProcessState]]) the process's state === Example === myObject.onStateChanged = function(newState) { //Event action }; ===== Enumerations ===== ==== ProcessError ==== A process error. === Values === - FailedToStart: the file cannot be found or insufficient permissions - Crashed: the process has crashed after having started successfully - Timedout: the last waitFor... method failed - WriteError: the process is not running or it may have closed it's input channel - ReadError: the process is not running - UnknownError: an unknown error has occured ==== ExitStatus ==== The process's exit status. === Values === - NormalExit: the process finished normally - CrashExit: the process crashed ==== ProcessState ==== The process's status. === Values === - NotRunning: the process is not running - Starting: the process is starting - Running: the process is running ==== ProcessChannel ==== A process's channel. === Values === - StandardOutput: the standard output channel - StandardError: the standard error output channel ==== ProcessChannelMode ==== A process's channel mode. === Values === - SeparateChannels: the standard error and output channels are separated - MergedChannels: the standard error channel is redirected to the the standard output channel - ForwardedChannels: the output of both channels is redirected to the parent process ==== OpenMode ==== A process's channel open mode. === Values === - ReadOnly: process channel opened for reading only - WriteOnly: process channel opened for writing only - ReadWrite: process channel opened for reading and writing - Truncate: process channel opened for writing, erases any previous content - Text: process channel opened in text mode - Unbuffered: process channel opened in unbuffered mode