/* * Copyright (C) 2010-2011 Robert Ancell. * Author: Robert Ancell * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. See http://www.gnu.org/copyleft/gpl.html the full text of the * license. */ #ifndef PROCESS_H_ #define PROCESS_H_ #include #include "log-file.h" G_BEGIN_DECLS #define PROCESS_TYPE (process_get_type()) #define PROCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROCESS_TYPE, ProcessClass)) #define PROCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROCESS_TYPE, Process)) #define PROCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROCESS_TYPE, ProcessClass)) #define PROCESS_SIGNAL_GOT_DATA "got-data" #define PROCESS_SIGNAL_GOT_SIGNAL "got-signal" #define PROCESS_SIGNAL_STOPPED "stopped" typedef struct { GObject parent_instance; } Process; typedef struct { GObjectClass parent_class; void (*got_data)(Process *process); void (*got_signal)(Process *process, int signum); void (*stopped)(Process *process); } ProcessClass; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Process, g_object_unref) typedef void (*ProcessRunFunc)(Process *process, gpointer user_data); GType process_get_type (void); Process *process_get_current (void); Process *process_new (ProcessRunFunc run_func, gpointer run_func_data); void process_set_log_file (Process *process, const gchar *path, gboolean log_stdout, LogMode log_mode); void process_set_clear_environment (Process *process, gboolean clear_environment); gboolean process_get_clear_environment (Process *process); void process_set_env (Process *process, const gchar *name, const gchar *value); const gchar *process_get_env (Process *process, const gchar *name); void process_set_command (Process *process, const gchar *command); const gchar *process_get_command (Process *process); gboolean process_start (Process *process, gboolean block); gboolean process_get_is_running (Process *process); GPid process_get_pid (Process *process); void process_signal (Process *process, int signum); void process_stop (Process *process); int process_get_exit_status (Process *process); G_END_DECLS #endif /* PROCESS_H_ */