Next: io.environment, Previous: io, Up: Top [Contents]
%--------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et
%--------------------------------------------------%
% Copyright (C) 1993-2012 The University of Melbourne.
% Copyright (C) 2013-2025 The Mercury team.
% This file is distributed under the terms specified in COPYING.LIB.
%--------------------------------------------------%
%
% File: io.call_system.m.
% Stability: high.
%
% This module provides predicates to invoke commands via the shell
% of the underlying operating system.
%
%--------------------------------------------------%
%--------------------------------------------------%
:- module io.call_system.
:- interface.
% Invokes the operating system shell with the specified Command.
% Result is either `ok(ExitStatus)', if it was possible to invoke
% the command, or `error(ErrorCode)' if not. The ExitStatus will be 0
% if the command completed successfully or the return value of the system
% call. If a signal kills the system call, then Result will be an error
% indicating which signal occurred.
%
:- pred call_system(string::in, io.res(int)::out, io::di, io::uo) is det.
% call_system_return_signal(Command, Result, !IO):
%
% Invokes the operating system shell with the specified Command.
% Result is either `ok(ExitStatus)' if it was possible to invoke
% the command or `error(Error)' if the command could not be executed.
% If the command could be executed then ExitStatus is either
% `exited(ExitCode)' if the command ran to completion or
% `signalled(SignalNum)' if the command was killed by a signal.
% If the command ran to completion then ExitCode will be 0 if the command
% ran successfully and the return value of the command otherwise.
%
:- pred call_system_return_signal(string::in, io.res(system_result)::out,
io::di, io::uo) is det.
% Interpret the child process exit status returned by system() or wait().
%
:- func decode_system_command_exit_code(int) = io.res(io.system_result).
%--------------------------------------------------%