Changes

Jump to navigation Jump to search
3,961 bytes added ,  12:17, 3 October 2018
=Conventions=
All functions and errors in this module are assigned to the {{Code|<code><nowiki>http://basex.org/modules/proc}} </nowiki></code> namespace, which is statically bound to the {{Code|proc}} prefix.<br/>All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix.
=Functions=
==proc:system==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|proc:system|$cmd as xs:string|xs:string}}<br/>{{Func|proc:system|$cmd as xs:string, $args as xs:string*|xs:string}}<br/>{{Func|proc:system|$cmd as xs:string, $args as xs:string*, $encoding options as map(xs:string, xs:string)|xs:string}}<br/>
|-
| '''Summary'''
|Executes the specified command in a separate process and returns the result as string.<br/>Additional {{Code|$cmd}} is the name of the command , arguments to the command may be specified via {{Code|$args}}.<br/>The result can be explicitly converted to a specified {{Code|$options}} parameter contains process options:* {{Code|encoding}}: convert result to the specified encoding. If no encoding is specifiedsupplied, the system’s default encoding is used.* {{Code|timeout}}: abort process execution after the specified number of seconds.* {{Code|dir}}: process command in the specified directory.* {{Code|input}}: standard string input ({{Code|stdin}}) to be passed on to the command.
|-
|'''Errors'''
|{{Error|BXPRnnnnencoding|#Error}} the specified encoding does not exist or is not supported.<br/>{{Error|timeout|#Error}} the specified timeout was exceeded.<br/>{{Error|error|#Error}} the command could not be executed, or an I/O exception was raised.<br/>{{Error|code....|#Error}} If the command results in commands returns an errorexit code different to 0, an XQuery error will be raised. Its code will consist of the letters {{Code|BXPRcode}} and four digits with the command’s exit code.<br/>{{Error|BXPR9999|#Error}} the specified encoding does not exist or is not supported.
|-
| '''Examples'''
|
* {{Code|proc:system('date')}} returns the current date on a Linux system.
* Analyses the given input and counts the number of lines, words and characters (provided that {{Code|wc}} is available on the system):<pre class="brush:xquery">proc:system( 'wc', (), map { 'input': 'A B' || out:nl() || 'C' })</pre>* The following example returns "Command “Command not found", if found” (unless {{Code|xyz}} is a valid command on the command "xyz" cannot be located or executedsystem):
<pre class="brush:xquery">
try {
proc:system('xyz')
} catch bxerrproc:BXPR0002 error { 'Command not found.: '|| $err:description
}
</pre>
==proc:execute==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|proc:execute|$cmd as xs:string|element(result)}}<br/>{{Func|proc:execute|$cmd as xs:string, $args as xs:string*|element(result)}}<br/>{{Func|proc:execute|$cmd as xs:string, $args as xs:string*, $encoding options as map(xs:string, xs:string)|element(result)}}
|-
| '''Summary'''
|Executes the specified command in a separate process and returns the result as element.<br/>Additional :* {{Code|$cmd}} is the name of the command , and arguments to the command may be specified via {{Code|$args}}.<br/>* The result can same {{Code|$options}} are allowed as for [[#proc:system|proc:system]].* Instead of the {{Code|proc:error}} error, the error message and process code will be explicitly converted assigned to a specified the returned elements.* Instead of the {{Code|$encodingproc:code....}}. If no encoding is specifiederror, the system’s default encoding is usederror message will be assigned to the returned element (no process code will be returned).<br/>A The result has the following structure:<br/>
<pre class="brush:xml">
<result>
<output>...resultoutput...</output> <error>0...error message...</error> <code>...process code...</code>
</result>
</pre>
|-
|'''Errors'''
|{{Error|BXPR9999encoding|#Error}} the specified encoding does not exist or is not supported.<br/>{{Error|timeout|#Error}} the specified timeout was exceeded.|-| '''Examples'''|* {{Code|proc:execute('dir', '\')}} returns the files of the root directory of a Windows system.* {{Code|proc:execute('ls', ('-l', '-a'))}} executes the {{Code|ls -la}} command on Unix systems.|} ==proc:fork== {| width='100%'|-| width='120' | '''Signatures'''|{{Func|proc:fork|$cmd as xs:string|element(result)}}<br/>{{Func|proc:fork|$cmd as xs:string, $args as xs:string*|element(result)}}<br/>{{Func|proc:fork|$cmd as xs:string, $args as xs:string*, $options as map(xs:string, xs:string)|element(result)}}|-| '''Summary'''|Executes the specified command and ignores the result. {{Code|$cmd}} is the name of the command, and arguments to the command may be specified via {{Code|$args}}. The same {{Code|$options}} are allowed as for [[#proc:system|proc:system]] (but the encoding will be ignored).|-|'''Errors'''|{{Error|encoding|#Error}} the specified encoding does not exist or is not supported.|-| '''Examples'''|* {{Code|proc:fork('sleep', '5')}}: sleep for 5 seconds (no one should notice).|} ==proc:property== {| width='100%'|-| width='120' | '''Signatures'''|{{Func|proc:property|$name as xs:string|xs:string?}}<br/>|-| '''Summary'''|Returns the system property, specified by {{Code|$name}}, or a context parameter of the {{Code|web.xml}} file with that name (see [[Web_Application#Configuration|Web Applications]]). An empty sequence is returned if the property does not exist. For environment variables of the operating system, please use [https://www.w3.org/TR/xpath-functions-30/#func-environment-variable fn:environment-variable].
|-
| '''Examples'''
|
* {{Code|proc:executeproperty('dirjava.class.path')}} returns the full user class path.* {{Code|map:merge(proc:property-names() ! map:entry(., proc:property(.)))}} returns a map with all system properties.|} ==proc:property-names== {| width='100%'|-| width='120' | '''\Signatures'''|{{Func|proc:property-names||xs:string*}}<br/>|-| '''Summary'''|Returns the names of all Java system properties and context parameters of the {{Code|web.xml}} file (see [[Web_Application#Configuration|Web Applications]]). For environment variables of the operating system, please use [https://www.w3.org/TR/xpath-functions-30/#func-available-environment-variables fn:available-environment-variables]. |-| '''Examples'''|* {{Code|proc:property('java.runtime.version')}} returns the root directory on a Windows systemversion of the Java runtime engine.
|}
|Description
|-
|{{Code|BXPR9999code...}}|The result of a command call with an exit code different to 0.|-|{{Code|code9999}}|A command could not be executed.|-|{{Code|encoding}}
|The specified encoding does not exist or is not supported.
|-
|{{Code|timeout}}
|The specified timeout was exceeded.
|}
=Changelog=
 
;Version 9.0
 
* Added: [[#proc:fork|proc:fork]]
* Updated: error codes; errors now use the module namespace
* Updated: new {{Code|input}} option; revised error handling
 
;Version 8.6
 
* Updated: [[#proc:system|proc:system]], [[#proc:exec|proc:exec]]: {{Code|encoding}} option moved to options argument, {{Code|timeout}} and {{Code|dir}} options added.
 
;Version 8.3
 
* Added: [[#proc:property|proc:property]], [[#proc:property-names|proc:property-names]].
The module was introduced with Version 7.3.
 
[[Category:XQuery]]
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu