2 * Copyright (C) 2010-2011 Robert Ancell.
3 * Author: Robert Ancell <robert.ancell@canonical.com>
5 * This program is free software: you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License as published by the Free Software
7 * Foundation, either version 3 of the License, or (at your option) any later
8 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
15 #include <glib-object.h>
21 #define PROCESS_TYPE (process_get_type())
22 #define PROCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROCESS_TYPE, ProcessClass))
23 #define PROCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROCESS_TYPE, Process))
24 #define PROCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROCESS_TYPE, ProcessClass))
26 #define PROCESS_SIGNAL_GOT_DATA "got-data"
27 #define PROCESS_SIGNAL_GOT_SIGNAL "got-signal"
28 #define PROCESS_SIGNAL_STOPPED "stopped"
30 typedef struct ProcessPrivate ProcessPrivate;
34 GObject parent_instance;
40 GObjectClass parent_class;
41 void (*got_data)(Process *process);
42 void (*got_signal)(Process *process, int signum);
43 void (*stopped)(Process *process);
46 typedef void (*ProcessRunFunc)(Process *process, gpointer user_data);
48 GType process_get_type (void);
50 Process *process_get_current (void);
52 Process *process_new (ProcessRunFunc run_func, gpointer run_func_data);
54 void process_set_log_file (Process *process, const gchar *path, gboolean log_stdout, LogMode log_mode);
56 void process_set_clear_environment (Process *process, gboolean clear_environment);
58 gboolean process_get_clear_environment (Process *process);
60 void process_set_env (Process *process, const gchar *name, const gchar *value);
62 const gchar *process_get_env (Process *process, const gchar *name);
64 void process_set_command (Process *process, const gchar *command);
66 const gchar *process_get_command (Process *process);
68 gboolean process_start (Process *process, gboolean block);
70 gboolean process_get_is_running (Process *process);
72 GPid process_get_pid (Process *process);
74 void process_signal (Process *process, int signum);
76 void process_stop (Process *process);
78 int process_get_exit_status (Process *process);
82 #endif /* PROCESS_H_ */