Process agent - run multiple processes in background
$Id$
Access type: read / write / execute
File Name:
/usr/share/YaST2/scrconf/process.scr
See also:
anyagent libscr MANPAGE(1) file/relative/to/doc_home/file.html
Example 73.
// start a process using default locale `Execute(.process.start_shell, "/bin/date") (14896) `Read(.process.read, 14896) ("PĂĄ Ăşno 15 07:15:24 CET 2008\n") `Read(.process.running, 14896) (false) `Read(.process.status, 14896) (0) // start a process in C locale, in a terminal, set the environment `Execute(.process.start_shell, "/bin/date", $["C_locale":true, "tty":true, "env":$["FOOVAR":"FOO"]]) (14899) `Read(.process.read, 14899) ("Fri Feb 15 07:18:02 CET 2008\r\n") // list processes `Dir(.process) ([14896, 14899]) // release process (free allocated buffers...) `Execute(.process.release, 14896) (true) `Dir(.process) ([14858, 14899]) // read/write lines example `Execute(.process.start_shell, "cat") (14900) `Write(.process, 14900,"the first line\nthe second line\n") (true) `Read(.process.read_line, 14900) ("the first line") `Read(.process.read_line, 14900) ("the second line") `Read(.process.read_line, 14900) (nil) // read complete output // check whether the buffer (output) is empty // (even if process is dead, buffer might contain something) `Write(.process, 14900,"the first line\nthe second line\n") (true) // buffer is not empty `Read (.process.buffer_empty, 14900) (false) `Read(.process.read, 14900) ("the first line\nthe second line\n") // buffer is empty after .read `Read (.process.buffer_empty, 14900) (true) // close input/output `Read(.process.running, 14900) (true) `Execute(.process.close, 14900) (0) `Read(.process.running, 14900) (false) The process agent can run multiple subprocesses in backgroung with full interaction (reading stdout/stderr, writing to stdin). It is possible to run a subprocess in terminal (instead of piped output/input). This agent obsoletes the background agent (ag_background).