|
BRL-CAD
|
Routines for launching and managing applications as subprocesses. More...
Files | |
| file | process.h |
Data Structures | |
| struct | bu_process_func_info |
Macros | |
| #define | ERROR_PROCESS_ABORTED 1067L |
Typedefs | |
| typedef int(* | bu_process_func_t) (void *data) |
Enumerations | |
| enum | bu_process_io_t { BU_PROCESS_STDIN , BU_PROCESS_STDOUT , BU_PROCESS_STDERR } |
| enum | bu_process_opts { BU_PROCESS_DEFAULT = 0x0 , BU_PROCESS_OUT_EQ_ERR = 0x1 , BU_PROCESS_HIDE_WINDOW = 0x2 } |
Functions | |
| DEPRECATED void | bu_process_exec (struct bu_process **info, const char *cmd, int argc, const char **argv, int out_eql_err, int hide_window) |
| Wrapper for executing a sub-process. | |
| void | bu_process_create (struct bu_process **pinfo, const char **argv, int process_creation_opts) |
| Wrapper for creating a sub-process. Allocates bu_process and starts process. | |
| int | bu_process_func (struct bu_process_func_info *info, bu_process_func_t func, void *data, int timeout_ms, int flags) |
| Run a callback in a subprocess and wait for it to complete. | |
| DEPRECATED int | bu_process_wait (int *aborted, struct bu_process *pinfo, int wtime) |
| wait for a sub-process to complete, release all process allocations, and release the process itself. | |
| int | bu_process_wait_n (struct bu_process **pinfo, int wtime) |
| wait for a sub-process to complete, release all process allocations, and release the process itself. | |
| int | bu_process_alive (struct bu_process *pinfo) |
| determine whether process is still running | |
| int | bu_process_pending (int fd) |
| determine whether there is data pending on fd | |
| DEPRECATED int | bu_process_read (char *buff, int *count, struct bu_process *pinfo, bu_process_io_t d, int n) |
| int | bu_process_read_n (struct bu_process *pinfo, bu_process_io_t d, int n, char *buff) |
| Read from a process's specified output channel. | |
| DEPRECATED FILE * | bu_process_open (struct bu_process *pinfo, bu_process_io_t d) |
| FILE * | bu_process_file_open (struct bu_process *pinfo, bu_process_io_t d) |
| Open and return a FILE pointer associated with the specified channel. | |
| DEPRECATED void | bu_process_close (struct bu_process *pinfo, bu_process_io_t d) |
| void | bu_process_file_close (struct bu_process *pinfo, bu_process_io_t d) |
| Close any FILE pointers internally opened via bu_process_open(). | |
| int | bu_process_fileno (struct bu_process *pinfo, bu_process_io_t d) |
| Retrieve the file descriptor to the I/O channel associated with the process. | |
| int | bu_process_pid (struct bu_process *pinfo) |
| Return the pid of the subprocess. | |
| DEPRECATED int | bu_process_args (const char **cmd, const char *const **argv, struct bu_process *pinfo) |
| int | bu_process_args_n (struct bu_process *pinfo, const char **cmd, const char *const **argv) |
| DEPRECATED int | bu_process_id (void) |
| Return the process ID of the calling process. | |
| int | bu_pid (void) |
| Return the process ID of the calling process. | |
| int | bu_pid_alive (int pid) |
| determine whether process is still running using its ID | |
| DEPRECATED int | bu_terminate (int process) |
| terminate a given process and any children. | |
| int | bu_pid_terminate (int pid) |
| terminate a given process and any children. | |
| int | bu_interactive (void) |
| detect whether or not a program is being run in interactive mode | |
Routines for launching and managing applications as subprocesses.
Routines for process and sub-process management.
Callback type used by bu_process_func().
The callback runs in a subprocess. On POSIX platforms this is implemented using fork(), so the callback should restrict itself to fork-safe operations.
| [in] | data | - opaque pointer supplied to bu_process_func() |
|
extern |
Wrapper for executing a sub-process.
|
extern |
Wrapper for creating a sub-process. Allocates bu_process and starts process.
| [out] | pinfo | - bu_process struct to be created |
| [in] | argv | - array of command line arguments to executed. Last element MUST be NULL |
| [in] | process_creation_opts | - bit field for bu_process_opts |
|
extern |
Run a callback in a subprocess and wait for it to complete.
The callback runs in an isolated child process. On POSIX platforms this is implemented using fork(), so the callback should limit itself to fork-safe operations and communicate results back to the parent via its return code and any captured output.
If info is non-NULL, the status fields are populated on return. If info->out and/or info->err are non-NULL, those initialized bu_vls buffers are truncated and filled with captured child output. When BU_PROCESS_OUT_EQ_ERR is supplied, stderr is merged into the stdout capture buffer; if no stdout buffer is supplied, the merged stream is captured in info->err when available.
| [in,out] | info | - status record and optional capture buffers. May be NULL |
| [in] | func | - callback to run in the subprocess |
| [in] | data | - opaque pointer supplied to func |
| [in] | timeout_ms | - maximum wait time in milliseconds before forcibly stopping the subprocess. A value of 0 waits indefinitely |
| [in] | flags | - subprocess behavior flags. BU_PROCESS_OUT_EQ_ERR is currently supported; on non-POSIX platforms this API is not yet supported |
|
extern |
wait for a sub-process to complete, release all process allocations, and release the process itself.
|
extern |
wait for a sub-process to complete, release all process allocations, and release the process itself.
| [in] | pinfo | - bu_process structure of interest |
| [in] | wtime | - maximum wait time (in ms) before forcibly stopping process. NOTE: 0 is treated as INFINITE |
|
extern |
determine whether process is still running
| [in] | pinfo | - bu_process structure of interest |
|
extern |
determine whether there is data pending on fd
| [in] | fd | - file descriptor of interest |
|
extern |
Read up to n bytes into buff from a process's specified output channel (fd == 1 for output, fd == 2 for err).
|
extern |
Read from a process's specified output channel.
| [in] | pinfo | - bu_process structure of interest |
| [in] | d | - channel (BU_PROCESS_STDOUT, BU_PROCESS_STDERR) |
| [in] | n | - max number of bytes to be read |
| [out] | buff | - data read from channel |
|
extern |
Open and return a FILE pointer associated with the specified file descriptor for input (0), output (1), or error (2) respectively.
Input will be opened write, output and error will be opened read.
Caller should not close these FILE pointers directly. Call bu_process_close() instead.
|
extern |
Open and return a FILE pointer associated with the specified channel.
Input will be opened write, output and error will be opened read.
Caller should not close these FILE pointers directly. Call bu_process_close() instead.
| [in] | pinfo | - bu_process structure of interest |
| [in] | d | - channel (BU_PROCESS_STDIN, BU_PROCESS_STDOUT, BU_PROCESS_STDERR) |
|
extern |
Close any FILE pointers internally opened via bu_process_open().
|
extern |
Close any FILE pointers internally opened via bu_process_open().
| [in] | pinfo | - bu_process structure of interest |
| [in] | d | - channel (BU_PROCESS_STDIN, BU_PROCESS_STDOUT, BU_PROCESS_STDERR) |
| int bu_process_fileno | ( | struct bu_process * | pinfo, |
| bu_process_io_t | d | ||
| ) |
Retrieve the file descriptor to the I/O channel associated with the process.
| [in] | pinfo | - bu_process structure of interest |
| [in] | d | - channel (BU_PROCESS_STDIN, BU_PROCESS_STDOUT, BU_PROCESS_STDERR) |
| int bu_process_pid | ( | struct bu_process * | pinfo | ) |
Return the pid of the subprocess.
| [in] | pinfo | - bu_process structure of interest |
| DEPRECATED int bu_process_args | ( | const char ** | cmd, |
| const char *const ** | argv, | ||
| struct bu_process * | pinfo | ||
| ) |
Reports one or both of the command string and the argv array used to execute the process.
The bu_process container owns all strings for both cmd and argv - for the caller they are read-only.
If either cmd or argv are NULL they will be skipped - if the caller only wants one of these outputs the other argument can be set to NULL.
| [out] | cmd | - pointer to the cmd string used to launch pinfo |
| [out] | argv | - pointer to the argv array used to launch pinfo |
| [in] | pinfo | - the bu_process structure of interest |
Reports one or both of the command string and the argv array used to execute the process.
The bu_process container owns all strings for both cmd and argv - for the caller they are read-only.
If either cmd or argv are NULL they will be skipped - if the caller only wants one of these outputs the other argument can be set to NULL.
| [in] | pinfo | - the bu_process structure of interest |
| [out] | cmd | - pointer to the cmd string used to launch pinfo |
| [out] | argv | - pointer to the argv array used to launch pinfo |
|
extern |
|
extern |
Return the process ID of the calling process.
|
extern |
determine whether process is still running using its ID
| [in] | pid | - process ID of interest |
|
extern |
terminate a given process and any children.
returns truthfully whether the process could be killed.
|
extern |
terminate a given process and any children.
| [in] | pid | - process ID of interest |
|
extern |
detect whether or not a program is being run in interactive mode