// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GLIBMM_SPAWN_H #define _GLIBMM_SPAWN_H /* $Id$ */ /* Copyright (C) 2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include GLIBMM_USING_STD(string) namespace Glib { typedef GPid Pid; /** @addtogroup glibmmEnums Enums and Flags */ /** * @ingroup glibmmEnums * @par Bitwise operators: * %SpawnFlags operator|(SpawnFlags, SpawnFlags)
* %SpawnFlags operator&(SpawnFlags, SpawnFlags)
* %SpawnFlags operator^(SpawnFlags, SpawnFlags)
* %SpawnFlags operator~(SpawnFlags)
* %SpawnFlags& operator|=(SpawnFlags&, SpawnFlags)
* %SpawnFlags& operator&=(SpawnFlags&, SpawnFlags)
* %SpawnFlags& operator^=(SpawnFlags&, SpawnFlags)
*/ enum SpawnFlags { SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0, SPAWN_DO_NOT_REAP_CHILD = 1 << 1, SPAWN_SEARCH_PATH = 1 << 2, SPAWN_STDOUT_TO_DEV_NULL = 1 << 3, SPAWN_STDERR_TO_DEV_NULL = 1 << 4, SPAWN_CHILD_INHERITS_STDIN = 1 << 5, SPAWN_FILE_AND_ARGV_ZERO = 1 << 6 }; /** @ingroup glibmmEnums */ inline SpawnFlags operator|(SpawnFlags lhs, SpawnFlags rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } /** @ingroup glibmmEnums */ inline SpawnFlags operator&(SpawnFlags lhs, SpawnFlags rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } /** @ingroup glibmmEnums */ inline SpawnFlags operator^(SpawnFlags lhs, SpawnFlags rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup glibmmEnums */ inline SpawnFlags operator~(SpawnFlags flags) { return static_cast(~static_cast(flags)); } /** @ingroup glibmmEnums */ inline SpawnFlags& operator|=(SpawnFlags& lhs, SpawnFlags rhs) { return (lhs = static_cast(static_cast(lhs) | static_cast(rhs))); } /** @ingroup glibmmEnums */ inline SpawnFlags& operator&=(SpawnFlags& lhs, SpawnFlags rhs) { return (lhs = static_cast(static_cast(lhs) & static_cast(rhs))); } /** @ingroup glibmmEnums */ inline SpawnFlags& operator^=(SpawnFlags& lhs, SpawnFlags rhs) { return (lhs = static_cast(static_cast(lhs) ^ static_cast(rhs))); } /** @defgroup Spawn Spawning Processes * Process launching with fork()/exec(). * @{ */ /** Exception class for errors occuring when spawning processes. */ class SpawnError : public Glib::Error { public: enum Code { FORK, READ, CHDIR, ACCES, PERM, TOOBIG, NOEXEC, NAMETOOLONG, NOENT, NOMEM, NOTDIR, LOOP, TXTBUSY, IO, NFILE, MFILE, INVAL, ISDIR, LIBBAD }; SpawnError(Code error_code, const Glib::ustring& error_message); explicit SpawnError(GError* gobject); Code code() const; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: static void throw_func(GError* gobject); friend void wrap_init(); // uses throw_func() #endif }; void spawn_async_with_pipes(const std::string& working_directory, const Glib::ArrayHandle& argv, const Glib::ArrayHandle& envp, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), Pid* child_pid = 0, int* standard_input = 0, int* standard_output = 0, int* standard_error = 0); void spawn_async_with_pipes(const std::string& working_directory, const Glib::ArrayHandle& argv, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), Pid* child_pid = 0, int* standard_input = 0, int* standard_output = 0, int* standard_error = 0); void spawn_async(const std::string& working_directory, const Glib::ArrayHandle& argv, const Glib::ArrayHandle& envp, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), Pid* child_pid = 0); void spawn_async(const std::string& working_directory, const Glib::ArrayHandle& argv, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), Pid* child_pid = 0); void spawn_sync(const std::string& working_directory, const Glib::ArrayHandle& argv, const Glib::ArrayHandle& envp, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), std::string* standard_output = 0, std::string* standard_error = 0, int* exit_status = 0); void spawn_sync(const std::string& working_directory, const Glib::ArrayHandle& argv, SpawnFlags flags = SpawnFlags(0), const sigc::slot& child_setup = sigc::slot(), std::string* standard_output = 0, std::string* standard_error = 0, int* exit_status = 0); void spawn_command_line_async(const std::string& command_line); void spawn_command_line_sync(const std::string& command_line, std::string* standard_output = 0, std::string* standard_error = 0, int* exit_status = 0); void spawn_close_pid(Pid pid); /** @} group Spawn */ } // namespace Glib #endif /* _GLIBMM_SPAWN_H */