Difference between revisions of "Process Module"

From BaseX Documentation
Jump to navigation Jump to search
Line 19: Line 19:
 
| '''Summary'''
 
| '''Summary'''
 
|Executes the specified command in a separate process and returns the result as string. {{Code|$cmd}} is the name of the command, arguments to the command may be specified via {{Code|$args}}. The {{Code|$options}} parameter contains process options:
 
|Executes the specified command in a separate process and returns the result as string. {{Code|$cmd}} is the name of the command, arguments to the command may be specified via {{Code|$args}}. The {{Code|$options}} parameter contains process options:
* {{Code|$encoding}}: convert result to the specified encoding. If no encoding is supplied, the system’s default encoding is used.
+
* {{Code|encoding}}: convert result to the specified encoding. If no encoding is supplied, the system’s default encoding is used.
 
* {{Code|timeout}}: query execution will be interrupted after the specified number of seconds.
 
* {{Code|timeout}}: query execution will be interrupted after the specified number of seconds.
 
* {{Code|dir}}: local directory from which the process will be executed.
 
* {{Code|dir}}: local directory from which the process will be executed.

Revision as of 17:32, 29 November 2016

This XQuery Module provides functions for executing system commands from XQuery.

Conventions

All functions in this module are assigned to the http://basex.org/modules/proc namespace, which is statically bound to the proc prefix.
All errors are assigned to the http://basex.org/errors namespace, which is statically bound to the bxerr prefix.

Functions

proc:system

Template:Mark third argument replaced with options argument.

Signatures proc:system($cmd as xs:string) as xs:string
proc:system($cmd as xs:string, $args as xs:string*) as xs:string
proc:system($cmd as xs:string, $args as xs:string*, $options as map(xs:string, xs:string)) as xs:string
Summary Executes the specified command in a separate process and returns the result as string. $cmd is the name of the command, arguments to the command may be specified via $args. The $options parameter contains process options:
  • encoding: convert result to the specified encoding. If no encoding is supplied, the system’s default encoding is used.
  • timeout: query execution will be interrupted after the specified number of seconds.
  • dir: local directory from which the process will be executed.
Errors BXPRnnnn: If the command results in an error, an XQuery error will be raised. Its code will consist of the letters BXPR and four digits with the command’s exit code.
BXPR9999: the specified encoding does not exist or is not supported.
Examples
  • proc:system('date') returns the current date on a Linux system.
  • The following example returns "Command not found", if the command "xyz" cannot be located or executed:
try {
  proc:system('xyz')
} catch bxerr:BXPR0002 {
  'Command not found.'
}

proc:execute

Template:Mark third argument replaced with options argument.

Signatures proc:execute($cmd as xs:string) as element(result)
proc:execute($cmd as xs:string, $args as xs:string*) as element(result)
proc:execute($cmd as xs:string, $args as xs:string*, $options as map(xs:string, xs:string)) as element(result)
Summary Executes the specified command in a separate process and returns the result as element. $cmd is the name of the command, and arguments to the command may be specified via $args.The $options parameter contains process options:
  • $encoding: convert result to the specified encoding. If no encoding is supplied, the system’s default encoding is used.
  • timeout: query execution will be interrupted after the specified number of seconds.
  • dir: local directory from which the process will be executed.

A result has the following structure:

<result>
  <output>...result output...</output>
  <error>...error output...</error>
  <code>0</code>
</result>
Errors BXPR9999: the specified encoding does not exist or is not supported.
Examples
  • proc:execute('dir', '\') returns the files of the root directory of a Windows system.
  • proc:execute('ls', ('-l', '-a')) executes the ls -la command on Unix systems.

proc:property

Signatures proc:property($name as xs:string) as xs:string?
Summary Returns the system property, specified by $name, or a context parameter of the web.xml file with that name (see Web Applications). An empty sequence is returned if the property does not exist. For environment variables of the operating system, please use fn:environment-variable.
Examples
  • map:merge(proc:property-names() ! map:entry(., proc:property(.))) returns a map with all system properties.

proc:property-names

Signatures proc:property-names() as xs:string*
Summary Returns the names of all Java system properties and context parameters of the web.xml file (see Web Applications). For environment variables of the operating system, please use fn:available-environment-variables.
Examples
  • proc:property('java.runtime.version') returns the version of the Java runtime engine.

Errors

Code Description
BXPR9999 The specified encoding does not exist or is not supported.

Changelog

Version 8.6
Version 8.3

The module was introduced with Version 7.3.