#include <Process.h>
Collaboration diagram for ACE_Process_Options:
Public Types | |
enum | { DEFAULT_COMMAND_LINE_BUF_LEN = 1024, NO_EXEC = 0 } |
Public Methods | |
ACE_Process_Options (int inherit_environment=1, int command_line_buf_len=DEFAULT_COMMAND_LINE_BUF_LEN, int env_buf_len=ENVIRONMENT_BUFFER, int max_env_args=MAX_ENVIRONMENT_ARGS) | |
~ACE_Process_Options (void) | |
Destructor. | |
int | set_handles (ACE_HANDLE std_in, ACE_HANDLE std_out=ACE_INVALID_HANDLE, ACE_HANDLE std_err=ACE_INVALID_HANDLE) |
void | release_handles (void) |
Release the standard handles previously set with set_handles;. | |
int | setenv (const ACE_TCHAR *format,...) |
int | setenv (const ACE_TCHAR *variable_name, const ACE_TCHAR *format,...) |
int | setenv (ACE_TCHAR *envp[]) |
Same as above with argv format. <envp> must be null terminated. | |
void | working_directory (const char *wd) |
void | working_directory (const wchar_t *wd) |
wchar_t version of working_directory | |
int | command_line (const ACE_TCHAR *format,...) |
int | command_line (const ACE_ANTI_TCHAR *format,...) |
Anti-TChar version of command_line (). | |
int | command_line (const ACE_TCHAR *const argv[]) |
Same as above in argv format. <argv> must be null terminated. | |
void | process_name (const ACE_TCHAR *name) |
const ACE_TCHAR * | process_name (void) |
u_long | creation_flags (void) const |
Get the creation flags. | |
void | creation_flags (u_long) |
Set the creation flags. | |
ACE_TCHAR * | working_directory (void) |
Current working directory. Returns "" if nothing has been set. | |
ACE_TCHAR * | command_line_buf (int *max_len=0) |
ACE_TCHAR *const * | command_line_argv (void) |
ACE_TCHAR * | env_buf (void) |
pid_t | getgroup (void) const |
pid_t | setgroup (pid_t pgrp) |
int | handle_inheritence (void) |
void | handle_inheritence (int) |
int | pass_handle (ACE_HANDLE) |
int | dup_handles (ACE_Handle_Set &set) const |
int | passed_handles (ACE_Handle_Set &set) const |
void | avoid_zombies (int) |
Set value for avoid_zombies (has no real effect except on *nix). | |
int | avoid_zombies (void) |
Get current value for avoid_zombies. | |
ACE_TEXT_STARTUPINFO * | startup_info (void) |
Used for setting and getting. | |
LPSECURITY_ATTRIBUTES | get_process_attributes (void) const |
LPSECURITY_ATTRIBUTES | set_process_attributes (void) |
LPSECURITY_ATTRIBUTES | get_thread_attributes (void) const |
LPSECURITY_ATTRIBUTES | set_thread_attributes (void) |
Protected Types | |
enum | { MAX_COMMAND_LINE_OPTIONS = 128, ENVIRONMENT_BUFFER = 16 * 1024, MAX_ENVIRONMENT_ARGS = 512 } |
Protected Methods | |
int | setenv_i (ACE_TCHAR *assignment, size_t len) |
void | inherit_environment (void) |
Protected Attributes | |
int | inherit_environment_ |
u_long | creation_flags_ |
Default 0. | |
int | avoid_zombies_ |
Avoid zombies for spawned processes. | |
int | environment_inherited_ |
Ensures once only call to inherit environment. | |
ACE_TEXT_STARTUPINFO | startup_info_ |
BOOL | handle_inheritence_ |
Default TRUE. | |
LPSECURITY_ATTRIBUTES | process_attributes_ |
Pointer to security_buf1_. | |
LPSECURITY_ATTRIBUTES | thread_attributes_ |
Pointer to security_buf2_. | |
SECURITY_ATTRIBUTES | security_buf1_ |
Data for process_attributes_. | |
SECURITY_ATTRIBUTES | security_buf2_ |
Data for thread_attributes_. | |
int | set_handles_called_ |
Is 1 if stdhandles was called. | |
size_t | environment_buf_index_ |
int | environment_argv_index_ |
Pointer to environment_argv_. | |
ACE_TCHAR * | environment_buf_ |
Pointer to buffer of the environment settings. | |
size_t | environment_buf_len_ |
Size of the environment buffer. Configurable. | |
ACE_TCHAR ** | environment_argv_ |
Pointers into environment_buf_. | |
int | max_environment_args_ |
Maximum number of environment variables. Configurable. | |
int | max_environ_argv_index_ |
Maximum index of environment_argv_ buffer. | |
ACE_TCHAR | working_directory_ [MAXPATHLEN+1] |
The current working directory. | |
int | command_line_argv_calculated_ |
Ensures command_line_argv is only calculated once. | |
ACE_TCHAR * | command_line_buf_ |
Pointer to buffer of command-line arguments. E.g., "-f foo -b bar". | |
ACE_TCHAR * | command_line_copy_ |
int | command_line_buf_len_ |
Max length of command_line_buf_. | |
ACE_TCHAR * | command_line_argv_ [MAX_COMMAND_LINE_OPTIONS] |
Argv-style command-line arguments. | |
pid_t | process_group_ |
Process-group on Unix; unused on Win32. | |
ACE_Handle_Set | handles_passed_ |
Set of handles that were passed in pass_handle (). | |
ACE_Handle_Set | dup_handles_ |
Results of duplicating handles passed in pass_handle (). | |
ACE_TCHAR | process_name_ [MAXPATHLEN+1] |
This class controls the options passed to <CreateProcess> (or <fork> and <exec>). Notice that on Windows CE, creating a process merely means instantiating a new process. You can't set the handles (since there's no stdin, stdout and stderr,) specify process/thread options, set environment,... So, basically, this class only set the command line and nothing else. Notice that on UNIX platforms, if the <setenv> is used, the <spawn> is using the <execve> system call. It means that the <command_line> should include a full path to the program file (<execve> does not search the PATH). If <setenv> is not used then, the <spawn> is using the <execvp> which searches for the program file in the PATH variable.
|
|
|
|
|
If <inherit_environment> == 1, the new process will inherit the environment of the current process. <command_line_buf_len> is the max strlen for command-line arguments. |
|
Destructor.
|
|
Get current value for avoid_zombies.
|
|
Set value for avoid_zombies (has no real effect except on *nix).
|
|
Same as above in argv format. <argv> must be null terminated.
|
|
Anti-TChar version of command_line ().
|
|
Set the command-line arguments. <format> can use any printf formats. The first token in <format> should be the path to the application. This can either be a full path, relative path, or just an executable name. If an executable name is used, we rely on the platform's support for searching paths. Since we need a path to run a process, this method *must* be called! Returns 0 on success, -1 on failure. |
|
argv-style command-line options. Parses and modifies the string created from <command_line_>. All spaces not in quotes ("" or '') are replaced with null (\0) bytes. An argv array is built and returned with each entry pointing to the start of null-terminated string. Returns { 0 } if nothing has been set. |
|
Buffer of command-line options. Returns a pointer to a buffer that contains the list of command line options. Prior to a call to command_line_argv(), this is a single string of space separated arguments independent of which form of command_line() was used to create it. After a call to command_line_argv(), this is a list of strings each terminated by '\0'. [Note: spawn() will call command_line_argv().] The total length of all these strings is the same as the single string in the prior case and can be obtained by providing max_len.
|
|
Set the creation flags.
|
|
Get the creation flags.
|
|
Any handles created through duplication of those passed into
|
|
Null-terminated buffer of null terminated strings. Each string is an environment assignment "VARIABLE=value". This buffer should end with two null characters. |
|
Get the process_attributes. Returns NULL if set_process_attributes has not been set. |
|
Get the thread_attributes. Returns NULL if set_thread_attributes has not been set. |
|
Get the process group. On UNIX, these methods are used by the <ACE_Process_Manager> to manage groups of processes. |
|
|
|
Default is TRUE. Allows disabling of handle inheritence. |
|
Helper function to grab win32 environment and stick it in environment_buf_ using this->setenv_i. |
|
The specified handle value will be included in the spawned process's command line as
|
|
Any handles previously passed to
|
|
Return the process_name. If the <process_name(name)> set method is not called, this method will return argv[0]. |
|
Specify the full path or relative path, or just the executable name for the process. If this is set, then <name> will be used to create the process instead of argv[0] set in the command line. This is here so that you can supply something other than executable name as argv[0]. |
|
Release the standard handles previously set with set_handles;.
|
|
Set the standard handles of the new process to the respective handles. If you want to affect a subset of the handles, make sure to set the others to ACE_INVALID_HANDLE. Returns 0 on success, -1 on failure. |
|
If this is called, a non-null process attributes is sent to CreateProcess. |
|
If this is called, a non-null thread attributes is sent to CreateProcess. |
|
Same as above with argv format. <envp> must be null terminated.
|
|
Set a single environment variable, <variable_name>. Since different platforms separate each environment variable differently, you must call this method once for each variable. <format> can be any printf format string. So options->setenv ("FOO","one + two = s", "three") will result in "FOO=one + two = three". |
|
|
|
Add <assignment> to environment_buf_ and adjust environment_argv_. <len> is the strlen of <assignment>. |
|
Set the process group. On UNIX, these methods are used by the <ACE_Process_Manager> to manage groups of processes. |
|
Used for setting and getting.
|
|
Current working directory. Returns "" if nothing has been set.
|
|
wchar_t version of working_directory
|
|
Set the working directory for the process. strlen of <wd> must be <= MAXPATHLEN. |
|
Avoid zombies for spawned processes.
|
|
Argv-style command-line arguments.
|
|
Ensures command_line_argv is only calculated once.
|
|
Pointer to buffer of command-line arguments. E.g., "-f foo -b bar".
|
|
Max length of command_line_buf_.
|
|
Pointer to copy of command-line arguments, which is needed when converting a command-line string into a command-line argv. |
|
Default 0.
|
|
Results of duplicating handles passed in pass_handle ().
|
|
Pointers into environment_buf_.
|
|
Pointer to environment_argv_.
|
|
Pointer to buffer of the environment settings.
|
|
Pointer into environment_buf_. This should point to the next free spot. |
|
Size of the environment buffer. Configurable.
|
|
Ensures once only call to inherit environment.
|
|
Default TRUE.
|
|
Set of handles that were passed in pass_handle ().
|
|
Whether the child process inherits the current process environment. |
|
Maximum index of environment_argv_ buffer.
|
|
Maximum number of environment variables. Configurable.
|
|
Pointer to security_buf1_.
|
|
Process-group on Unix; unused on Win32.
|
|
Pathname for the process. Relative path or absolute path or just the program name. |
|
Data for process_attributes_.
|
|
Data for thread_attributes_.
|
|
Is 1 if stdhandles was called.
|
|
|
|
Pointer to security_buf2_.
|
|
The current working directory.
|