Automatic generation produced by ISE Eiffel
note description: "Process launcher on Windows." status: "See notice at end of class." legal: "See notice at end of class." date: "$Date: 2020-05-19 06:42:21 -0800 (Tue, 19 May 2020) $" revision: "$Revision: 104268 $" class interface PROCESS_IMP create make (executable_name: READABLE_STRING_GENERAL; argument_list: detachable ITERABLE [READABLE_STRING_GENERAL]; work_directory: detachable READABLE_STRING_GENERAL) -- Create process object with executable_name as executable with arguments argument_list -- and with working directory work_directory. -- Apply Void to a_working_directory if no working directory is specified. -- Apply Void to args if no argument is necessary. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS executable_name_attached: attached executable_name executable_name_not_empty: not executable_name.is_empty arguments_attached: attached argument_list as args implies ∀ a: args ¦ attached a ensure -- from BASE_PROCESS command_line_not_empty: command_line /= Void and then not command_line.is_empty working_directory_set: attached work_directory implies attached working_directory as w and then w.same_string_general (work_directory) working_directory_set: attached work_directory = attached working_directory initialized: base_parameter_initialized make_with_command_line (cmd_line: READABLE_STRING_GENERAL; a_working_directory: detachable READABLE_STRING_GENERAL) -- Create process object with cmd_line as command line in which executable and -- arguments are included and with a_working_directory as its working directory. -- Apply Void to a_working_directory if no working directory is specified. require -- from BASE_PROCESS command_line_not_void: cmd_line /= Void command_line_not_empty: not cmd_line.is_empty ensure -- from BASE_PROCESS command_line_not_empty: command_line /= Void and then not command_line.is_empty working_directory_set: a_working_directory /= Void implies (attached working_directory as l_wd and then l_wd.same_string_general (a_working_directory)) working_directory_set: a_working_directory = Void implies working_directory = Void initialized: base_parameter_initialized feature -- Access buffer_size: INTEGER_32 -- Size of buffer used for interprocess data transmission -- (from PROCESS) check_nt_platform (a_result, a_succ: TYPED_POINTER [BOOLEAN]) -- If current system is Microsoft NT system, set a_result to True, otherwise False. -- If succeeded, set a_succ to True. -- (from PROCESS_UTILITY) command_line: IMMUTABLE_STRING_32 -- Program name, with its arguments, if any, which will be run -- in launched process -- (from BASE_PROCESS) environment_variable_table: detachable HASH_TABLE [READABLE_STRING_GENERAL, READABLE_STRING_GENERAL] -- Table of environment variables to be passed to new process. -- Key is variable name and value is the value of the variable. -- If this table is Void or empty, environment variables of the -- parent process will be passed to the new process. -- (from BASE_PROCESS) error_direction: INTEGER_32 -- Where will the error stream of the to-be launched process be redirected. -- Valid values are those constants defined in class BASE_REDIRECTION -- (from BASE_PROCESS) error_file_name: detachable IMMUTABLE_STRING_32 -- File name served as the redirected error stream of the new process -- (from BASE_PROCESS) generating_type: TYPE [detachable PROCESS_IMP] -- Type of current object -- (type of which it is a direct instance) -- (from ANY) ensure -- from ANY generating_type_not_void: Result /= Void generator: STRING_8 -- Name of current object's generating class -- (base class of the type of which it is a direct instance) -- (from ANY) ensure -- from ANY generator_not_void: Result /= Void generator_not_empty: not Result.is_empty id: INTEGER_32 -- Process identifier of last launched process. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_launched: launched input_direction: INTEGER_32 -- Where will input stream of the to-be launched process be redirected. -- Valid values are those constants defined in class BASE_REDIRECTION -- (from BASE_PROCESS) input_file_name: detachable IMMUTABLE_STRING_32 -- File name served as the redirected input stream of the new process -- (from BASE_PROCESS) output_direction: INTEGER_32 -- Where will the output stream of the to-be launched process be redirected. -- Valid values are those constants defined in class BASE_REDIRECTION -- (from BASE_PROCESS) output_file_name: detachable IMMUTABLE_STRING_32 -- File name served as the redirected output stream of the new process -- (from BASE_PROCESS) Platform: PLATFORM -- Facility to tell us which `platform` we are on -- (from BASE_PROCESS) ensure -- from BASE_PROCESS platform_created: Result /= Void process_id_pair_list: LINKED_LIST [TUPLE [parent_id: INTEGER_32; process_id: INTEGER_32]] -- List of process id pairs taken from a system snapshot. -- first item of a pair is parent process id, second item of a pair is process id. -- (from PROCESS_UTILITY) ensure -- from PROCESS_UTILITY result_attached: Result /= Void working_directory: detachable IMMUTABLE_STRING_32 -- Working directory of the program to be launched -- (from BASE_PROCESS) feature -- Comparison frozen deep_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void -- or attached to isomorphic object structures? -- (from ANY) ensure -- from ANY instance_free: class shallow_implies_deep: standard_equal (a, b) implies Result both_or_none_void: (a = Void) implies (Result = (b = Void)) same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) symmetric: Result implies deep_equal (b, a) frozen equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached -- to objects considered equal? -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b)) frozen is_deep_equal alias "≡≡≡" (other: PROCESS_IMP): BOOLEAN -- Are Current and other attached to isomorphic object structures? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY shallow_implies_deep: standard_is_equal (other) implies Result same_type: Result implies same_type (other) symmetric: Result implies other.is_deep_equal (Current) is_equal (other: PROCESS_IMP): BOOLEAN -- Is other attached to an object considered -- equal to current object? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY symmetric: Result implies other ~ Current consistent: standard_is_equal (other) implies Result frozen standard_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached to -- field-by-field identical objects of the same type? -- Always uses default object comparison criterion. -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b)) frozen standard_is_equal alias "≜" (other: PROCESS_IMP): BOOLEAN -- Is other attached to an object of the same type -- as current object, and field-by-field identical to it? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY same_type: Result implies same_type (other) symmetric: Result implies other.standard_is_equal (Current) feature -- Status report abort_termination_when_failed: BOOLEAN -- Will termination be aborted when there is a child process which can not be terminated -- when `terminate_tree`? -- Have effect only on Windows. -- (from BASE_PROCESS) are_agents_valid (handler: detachable PROCEDURE [READABLE_STRING_8]; is_error: BOOLEAN): BOOLEAN -- Are output redirection agent and error redirection agent valid? -- If you redirect both output and error to one agent, -- they are not valid. You must redirect output and error to -- different agents. -- (from PROCESS) conforms_to (other: ANY): BOOLEAN -- Does type of current object conform to type -- of other (as per Eiffel: The Language, chapter 13)? -- (from ANY) require -- from ANY other_not_void: other /= Void detached_console: BOOLEAN -- Will process be launched without any console ? -- Has effects on Windows. -- (from BASE_PROCESS) exit_code: INTEGER_32 -- Exit code of child process -- Should be called after process has exited. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS process_launched: launched force_terminated: BOOLEAN -- Has process been terminated by user? -- (from BASE_PROCESS) has_exited: BOOLEAN -- Has launched process exited and have allocated resources been cleaned up? -- Important: If you register either terminate or exit agents, `has_exited` doesn't mean those agents have finished. -- Use `wait_for_exit` to ensure that all registered agents are finished. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_launched: launched hidden: BOOLEAN -- Will the process be launched silently? -- e.g., no console window will prompt out. -- Has effects on Windows. -- (from BASE_PROCESS) is_last_wait_timeout: BOOLEAN -- Did the last `wait_for_exit_with_timeout` time out? -- (from BASE_PROCESS_IMP) is_launched_in_new_process_group: BOOLEAN -- Will process be launched in a new process group? -- Only has effect on Windows. -- (from BASE_PROCESS) is_running: BOOLEAN -- Is process running? -- (from BASE_PROCESS) is_terminal_control_enabled: BOOLEAN -- Should launched process has terminal control over standard input, output and error? -- If terminal control is not enabled, launched process won't be able to get access to terminals. -- Has effect only on Unix. -- (from BASE_PROCESS) last_termination_successful: BOOLEAN -- Is last process termination operation successful? -- (from BASE_PROCESS) launched: BOOLEAN -- Has the process been launched? -- (from BASE_PROCESS) same_type (other: ANY): BOOLEAN -- Is type of current object identical to type of other? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY definition: Result = (conforms_to (other) and other.conforms_to (Current)) separate_console: BOOLEAN -- Will process be launched with a new console instead of inheriting parent's console? -- Has effects on Windows. -- (from BASE_PROCESS) feature -- Status setting set_abort_termination_when_failed (b: BOOLEAN) -- Set `abort_termination_when_failed` with b. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS abort_termination_when_failed_set: abort_termination_when_failed = b set_buffer_size (size: INTEGER_32) -- Set `buffer_size` with size. -- (from PROCESS) require -- from PROCESS process_not_running: not is_running size_positive: size > 0 ensure -- from PROCESS buffer_size_set: buffer_size = size set_detached_console (b: BOOLEAN) -- Set `detached_console` with b. -- Has effects on Windows. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS detached_console_set: detached_console = b set_environment_variable_table (a_table: like environment_variable_table) -- Set `environment_variable_table` with a_table. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS environment_variable_table_set: environment_variable_table = a_table set_environment_variables (a_table: HASH_TABLE [NATIVE_STRING, READABLE_STRING_GENERAL]) -- Set `environment_variable_table` with a_table. -- a_table can be retrieved directly from {EXECUTION_ENVIRONMENT}.environ. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running a_table_attached: a_table /= Void set_hidden (h: BOOLEAN) -- Set is_hidden with h. -- Has effects on Windows. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS hidden_flag_set: hidden = h set_separate_console (b: BOOLEAN) -- Set `separate_console` with b. -- Has effects on Windows. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS separate_console_set: separate_console = b set_timer (a_timer: like timer) -- Set a_timer as timer used by this process launcher. -- If no timer is set, a PROCESS_THREAD_TIMER will be used -- when launch a process. -- In Vision2, PROCESS_VISION2_TIMER is recommended. -- (from PROCESS) require -- from PROCESS process_not_running: not is_running a_timer_not_void: a_timer /= Void ensure -- from PROCESS timer_set: timer = a_timer feature -- Duplication copy (other: PROCESS_IMP) -- Update current object using fields of object attached -- to other, so as to yield equal objects. -- (from ANY) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_equal: Current ~ other frozen deep_copy (other: PROCESS_IMP) -- Effect equivalent to that of: -- `copy` (other . `deep_twin`) -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY deep_equal: deep_equal (Current, other) frozen deep_twin: PROCESS_IMP -- New object structure recursively duplicated from Current. -- (from ANY) ensure -- from ANY deep_twin_not_void: Result /= Void deep_equal: deep_equal (Current, Result) frozen standard_copy (other: PROCESS_IMP) -- Copy every field of other onto corresponding field -- of current object. -- (from ANY) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_standard_equal: standard_is_equal (other) frozen standard_twin: PROCESS_IMP -- New object field-by-field identical to other. -- Always uses default copying semantics. -- (from ANY) ensure -- from ANY standard_twin_not_void: Result /= Void equal: standard_equal (Result, Current) frozen twin: PROCESS_IMP -- New object equal to Current -- `twin` calls `copy`; to change copying/twinning semantics, redefine `copy`. -- (from ANY) ensure -- from ANY twin_not_void: Result /= Void is_equal: Result ~ Current feature -- Basic operations frozen default: detachable PROCESS_IMP -- Default value of object's type -- (from ANY) frozen default_pointer: POINTER -- Default value of type POINTER -- (Avoid the need to write p.`default` for -- some p of type POINTER.) -- (from ANY) ensure -- from ANY instance_free: class default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) -- (from ANY) frozen do_nothing -- Execute a null action. -- (from ANY) ensure -- from ANY instance_free: class feature -- Actions setting disable_launch_in_new_process_group -- Ensure new process is launched in current process group. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS launched_in_new_process_group_enabled: not is_launched_in_new_process_group enable_launch_in_new_process_group -- Ensure new process is launched in a new process group. -- Only has effect on Windows. -- Note: If process is launched in new process group, then `terminate_tree` can terminate -- whole process tree (including all children processes), -- otherwise, it can only terminate the new process itself. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS launched_in_new_process_group_enabled: is_launched_in_new_process_group set_on_exit_handler (handler: like on_exit_handler) -- Set a handler which will be called when process exits. -- Set with Void to disable exit handler. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS handler_set: on_exit_handler = handler set_on_fail_launch_handler (handler: like on_fail_launch_handler) -- Set a handler which will be called when process launch failed. -- Set with Void to disable fail launch handler. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS handler_set: on_fail_launch_handler = handler set_on_start_handler (handler: like on_start_handler) -- Set a handler which will be called when process starts. -- Set with Void to disable start handler. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS handler_set: on_start_handler = handler set_on_successful_launch_handler (handler: like on_successful_launch_handler) -- Set a handler which will be called when process launch successed. -- Set with Void to disable successful launch handler. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS handler_set: on_successful_launch_handler = handler set_on_terminate_handler (handler: like on_terminate_handler) -- Set a handler which will be called when process has been terminated. -- Set with Void to disable terminate handler. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS handler_set: on_terminate_handler = handler feature -- Control close -- Close handles associated with child process. -- The process may continue running. -- If there is any input/output redirection to/from current process, it will be closed. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS launched: launched launch -- Launch process. require -- from BASE_PROCESS process_not_running: not is_running input_redirection_valid: is_input_redirection_valid (input_direction) output_redirection_valid: is_output_redirection_valid (output_direction) error_redirection_valid: is_error_redirection_valid (error_direction) terminate -- Terminate launched process. -- Check `last_termination_successful` after to see if `terminate` succeeded. -- `terminate` executes asynchronously. After calling `terminate`, call wait_to_exit -- to wait for process to exit. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS process_launched: launched process_not_terminated: not force_terminated terminate_tree -- Terminate process tree starting from current launched process. -- Check `last_termination_successful` after to see if `terminate_tree` succeeded. -- `terminate_tree` executes asynchronously. After calling `terminate`, call wait_to_exit -- to wait for process to exit. -- Note: on Unix, this feature can terminate whole process tree only when `is_launched_in_new_process_group` is set to True -- before new process is launched. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS process_launched: launched process_not_terminated: not force_terminated wait_for_exit -- Wait until process has exited. -- Note: child processes of launched process are not guaranteed to have exited after `wait_for_exit` returns. require -- from BASE_PROCESS process_launched: launched ensure -- from BASE_PROCESS process_exited: has_exited wait_for_exit_with_timeout (a_timeout: INTEGER_32) -- Wait launched process to exit for at most timeout milliseconds. -- Check `has_exited` after to see if launched process has exited. -- Note: child processes of launched process are not guaranteed to have exited -- even if `has_exited` is True after `wait_for_exit_with_timeout`. require -- from BASE_PROCESS process_launched: launched timeout_positive: a_timeout > 0 wait_for_input -- Wait launched process to start receiving events. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS_IMP process_launched: launched feature -- IO redirection cancel_error_redirection -- Cancel error redirection. -- (from PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS error_redirection_canceled: error_direction = {BASE_REDIRECTION}.no_redirection error_file_name_set: attached error_file_name as l_file_name and then l_file_name.is_empty ensure then -- from PROCESS error_handler_set: error_handler = Void cancel_input_redirection -- Cancel input redirection. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS input_redirection_canceled: input_direction = {BASE_REDIRECTION}.no_redirection input_file_name_set: input_file_name ~ create {attached IMMUTABLE_STRING_32}.make_from_string_8 ("") cancel_output_redirection -- Cancel output redirection. -- (from PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS output_redirection_canceled: output_direction = {BASE_REDIRECTION}.no_redirection output_file_name_set: attached output_file_name as l_file_name and then l_file_name.is_empty ensure then -- from PROCESS output_handler_set: output_handler = Void disable_terminal_control -- Make sure that launched process doesn't has terminal control over standard input, output and error. -- Has effect only on Unix. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS is_terminal_control_disabled: not is_terminal_control_enabled enable_terminal_control -- Make sure that launched process has terminal control over standard input, output and error. -- Has effect only on Unix and only when `is_launched_in_new_process_group` is True. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS terminal_control_enabled: is_terminal_control_enabled redirect_error_to_agent (a_error_handler: attached like error_handler) -- Redirect error stream of process to an agent -- so whenever some error data comes out of process, -- the agent will be called with it's parameter assigned to -- the error data. -- (from PROCESS) require -- from PROCESS process_not_running: not is_running handler_not_void: a_error_handler /= Void not_same_as_output_handler: are_agents_valid (a_error_handler, True) ensure -- from PROCESS error_redirected_to_stream: error_direction = {PROCESS_REDIRECTION_CONSTANTS}.to_stream error_handler_set: error_handler = a_error_handler error_file_name_void: error_file_name = Void redirect_error_to_file (a_file_name: READABLE_STRING_GENERAL) -- Redirect the error stream of process to a file. -- (from PROCESS) require -- from BASE_PROCESS process_not_running: not is_running a_file_name_not_void: a_file_name /= Void a_file_name_not_empty: not a_file_name.is_empty output_and_error_file_not_same: attached output_file_name as l_fn implies not l_fn.same_string_general (a_file_name) ensure -- from BASE_PROCESS error_redirected_to_file: error_direction = {BASE_REDIRECTION}.to_file error_file_set: attached error_file_name as fn and then fn.same_string_general (a_file_name) ensure then -- from PROCESS error_handler_void: error_handler = Void redirect_error_to_same_as_output -- Redirect output and error to the same location. -- Not applicable on .NET. -- (from PROCESS) require -- from BASE_PROCESS not_on_dotnet_platform: not Platform.is_dotnet process_not_running: not is_running ensure -- from BASE_PROCESS error_redirected_to_same_as_output: error_direction = {BASE_REDIRECTION}.to_same_as_output error_file_name_set: error_file_name = Void ensure then -- from PROCESS error_handler_set: error_handler = Void redirect_error_to_stream -- Redirect error stream of the process to its parent's stream -- so you can use `read_error_stream` to read data from the process. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS error_redirected_to_stream: error_direction = {BASE_REDIRECTION}.to_stream error_file_name_unset: error_file_name = Void redirect_input_to_file (a_file_name: READABLE_STRING_GENERAL) -- Redirect input stream of process to a file -- with namea_file_name. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running a_file_name_not_void: a_file_name /= Void a_file_name_not_empty: not a_file_name.is_empty ensure -- from BASE_PROCESS input_redirectd_to_file: input_direction = {BASE_REDIRECTION}.to_file input_file_name_set: attached input_file_name as l_file_name and then l_file_name.same_string_general (a_file_name) redirect_input_to_stream -- Redirect input stream of process to its parent's stream -- so you can use `put_string` to send data into process. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS input_redirected_to_stream: input_direction = {BASE_REDIRECTION}.to_stream input_file_name_void: input_file_name = Void redirect_output_to_agent (a_output_handler: attached like output_handler) -- Redirect output stream of process to an agent -- so whenever some output data comes out of process, -- the agent will be called with it's parameter assigned to -- the output data. -- (from PROCESS) require -- from PROCESS process_not_running: not is_running handler_not_void: a_output_handler /= Void not_same_as_error_handler: are_agents_valid (a_output_handler, False) ensure -- from PROCESS output_redirected_to_stream: output_direction = {PROCESS_REDIRECTION_CONSTANTS}.to_stream output_handler_set: output_handler = a_output_handler output_file_name_void: output_file_name = Void redirect_output_to_file (a_file_name: READABLE_STRING_GENERAL) -- Redirect output stream of process to a file -- with name a_file_name. -- (from PROCESS) require -- from BASE_PROCESS process_not_running: not is_running a_file_name_not_void: a_file_name /= Void a_file_name_not_empty: not a_file_name.is_empty output_and_error_file_not_same: attached error_file_name as l_fn implies not l_fn.same_string_general (a_file_name) ensure -- from BASE_PROCESS output_redirected_to_file: output_direction = {BASE_REDIRECTION}.to_file output_file_name_set: attached output_file_name as fn and then fn.same_string_general (a_file_name) ensure then -- from PROCESS output_handler_void: output_handler = Void redirect_output_to_stream -- Redirect output stream of the process to its parent's stream -- so you can use `read_output_stream` to read data from the process. -- (from BASE_PROCESS) require -- from BASE_PROCESS process_not_running: not is_running ensure -- from BASE_PROCESS output_redirected_to_stream: output_direction = {BASE_REDIRECTION}.to_stream output_file_name_unset: output_file_name = Void feature -- Interprocess data transmission has_error_stream_closed: BOOLEAN -- Was standard error of the process closed? -- (from BASE_PROCESS) has_error_stream_error: BOOLEAN -- Was there an error when calling `read_error_to_special`? -- (from BASE_PROCESS) has_input_error: BOOLEAN -- Was there an error when calling `put_string`? -- (from BASE_PROCESS) has_output_stream_closed: BOOLEAN -- Was standard output of the process closed? -- (from BASE_PROCESS) has_output_stream_error: BOOLEAN -- Was there an error when calling `read_output_to_special`? -- (from BASE_PROCESS) put_string (s: READABLE_STRING_8) -- Send s into launched process as its input data. blocking_put_string (s: READABLE_STRING_8) -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS input_redirect_to_stream: input_direction = {BASE_REDIRECTION}.to_stream process_launched: launched string_not_void: s /= Void read_error_to_special (buffer: SPECIAL [NATURAL_8]) -- Wait for and read data from the process standard error into buffer with a maximum of buffer.count bytes -- and update buffer.count with the number of actually read bytes that can range between 0 and old buffer.count. -- Report result in `has_error_stream_error`. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS error_redirect_to_stream: error_direction = {BASE_REDIRECTION}.to_stream process_launched: launched ensure -- from BASE_PROCESS buffer_count_in_range: buffer.count <= old buffer.count read_output_to_special (buffer: SPECIAL [NATURAL_8]) -- Wait for and read data from the process standard output into buffer with a maximum of buffer.count bytes -- and update buffer.count with the number of actually read bytes that can range between 0 and old buffer.count. -- Report result in `has_output_stream_error`. -- (from BASE_PROCESS_IMP) require -- from BASE_PROCESS output_redirect_to_stream: output_direction = {BASE_REDIRECTION}.to_stream process_launched: launched ensure -- from BASE_PROCESS buffer_count_in_range: buffer.count <= old buffer.count feature -- Output Io: STD_FILES -- Handle to standard file setup -- (from ANY) ensure -- from ANY instance_free: class io_not_void: Result /= Void out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY out_not_void: Result /= Void print (o: detachable ANY) -- Write terse external representation of o -- on standard output. -- (from ANY) ensure -- from ANY instance_free: class frozen tagged_out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY tagged_out_not_void: Result /= Void feature -- Platform Operating_environment: OPERATING_ENVIRONMENT -- Objects available from the operating system -- (from ANY) ensure -- from ANY instance_free: class operating_environment_not_void: Result /= Void feature -- Process access rights cwin_process_all_access: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_create_process: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_dup_handle: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_query_information: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_set_information: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_set_quota: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_synchronize: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_terminate: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_vm_operation: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_vm_read: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) cwin_process_vm_write: INTEGER_32 -- (from WEL_PROCESS_TOOLHELP_CONSTANTS) feature -- Validation checking is_error_redirection_valid (a_error_direction: INTEGER_32): BOOLEAN -- Can error of process be redirected to a_error_direction? -- (from PROCESS) require -- from BASE_PROCESS True is_input_redirection_valid (a_input_direction: INTEGER_32): BOOLEAN -- Can input of process be redirected to a_input_direction? -- (from BASE_PROCESS) is_output_redirection_valid (a_output_direction: INTEGER_32): BOOLEAN -- Can output of process be redirected to a_output_direction? -- (from PROCESS) require -- from BASE_PROCESS True invariant -- from ANY reflexive_equality: standard_is_equal (Current) reflexive_conformance: conforms_to (Current) note copyright: "Copyright (c) 1984-2020, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class PROCESS_IMP -- Generated by Eiffel Studio --
For more details: eiffel.org