![]() |
![]() |
![]() |
Cutterリファレンスマニュアル | ![]() |
---|---|---|---|---|
Top | 説明 | オブジェクト階層 | プロパティ | シグナル |
#define GCUT_EGG_ERROR struct GCutEgg; struct GCutEggClass; enum GCutEggError; void gcut_egg_close (GCutEgg *egg
); GQuark gcut_egg_error_quark (void
); gchar ** gcut_egg_get_env (GCutEgg *egg
); GIOChannel * gcut_egg_get_error (GCutEgg *egg
); GSpawnFlags gcut_egg_get_flags (GCutEgg *egg
); guint gcut_egg_get_forced_termination_wait_time (GCutEgg *egg
); GIOChannel * gcut_egg_get_input (GCutEgg *egg
); GIOChannel * gcut_egg_get_output (GCutEgg *egg
); GPid gcut_egg_get_pid (GCutEgg *egg
); gboolean gcut_egg_hatch (GCutEgg *egg
,GError **error
); void gcut_egg_kill (GCutEgg *egg
,gint signal_number
); GCutEgg * gcut_egg_new (const gchar *command
,...
); GCutEgg * gcut_egg_new_argv (gint argc
,gchar **argv
); GCutEgg * gcut_egg_new_array (GArray *command
); GCutEgg * gcut_egg_new_strings (const gchar **command
); GCutEgg * gcut_egg_new_va_list (const gchar *command
,va_list args
); void gcut_egg_set_env (GCutEgg *egg
,const gchar *name
,...
); void gcut_egg_set_flags (GCutEgg *egg
,GSpawnFlags flags
); void gcut_egg_set_forced_termination_wait_time (GCutEgg *egg
,guint timeout
); gint gcut_egg_wait (GCutEgg *egg
,guint timeout
,GError **error
); gboolean gcut_egg_write (GCutEgg *egg
,const gchar *chunk
,gsize size
,GError **error
);
"error" :Run Last
"error-received" :Run Last
"output-received" :Run Last
"reaped" :Run Last
GCutEggは外部コマンドの実行・通信・終了をカプセル化します。GCutEggはエラーをGErrorとして報告します。エラーはgcut_assert_error()
を使うことにより簡単に検証できます。
外部コマンドはgcut_egg_new()
、gcut_egg_new_strings()
などのようなコンストラクタで指定します。この時点では外部コマンドは実行されません。gcut_egg_hatch()
で指定された外部コマンドが実行されます。
外部コマンドの標準出力・エラー出力は"output-received"シグナル・"error-received"シグナル、あるいは、gcut_egg_get_output()
・gcut_egg_get_error()
が返すGIOChannelで取得できます。gcut_egg_write()
は外部コマンドの標準入力にデータを書き込みます。
外部コマンドの終了を待つためにはgcut_egg_wait()
を使うことができます。無限待ちを避けるために、タイムアウトを指定することができます。
例:
static GString *output_string; static GCutEgg *egg; void cut_setup (void) { output_string = g_string_new(NULL); egg = NULL; } void cut_teardown (void) { if (output_string) g_string_free(output_string, TRUE); if (egg) g_object_unref(egg); } static void cb_output_received (GCutEgg *egg, const gchar *chunk, gsize size, gpointer user_data) { g_string_append_len(output_string, chunk, size); } void test_echo (void) { GError *error = NULL; egg = gcut_egg_new("echo", "XXX", NULL); g_signal_connect(egg, "receive-output", G_CALLBACK(cb_output_received), NULL); gcut_egg_hatch(egg, &error); gcut_assert_error(error); gcut_egg_wait(egg, 1000, &error); gcut_assert_error(error); cut_assert_equal_string("XXX\n", output_string->str); }
#define GCUT_EGG_ERROR (gcut_egg_error_quark())
GCUT_EGG_ERROR
は非推奨です。新しいコードでは使わないでください。
struct GCutEggClass { GObjectClass parent_class; void (*output_received) (GCutEgg *egg, const gchar *chunk, gsize size); void (*error_received) (GCutEgg *egg, const gchar *chunk, gsize size); void (*reaped) (GCutEgg *egg, gint status); void (*error) (GCutEgg *egg, GError *error); };
GCutEggClass
は非推奨です。新しいコードでは使わないでください。
typedef enum { GCUT_EGG_ERROR_COMMAND_LINE, GCUT_EGG_ERROR_IO_ERROR, GCUT_EGG_ERROR_ALREADY_RUNNING, GCUT_EGG_ERROR_NOT_RUNNING, GCUT_EGG_ERROR_INVALID_OBJECT, GCUT_EGG_ERROR_TIMEOUT } GCutEggError;
GCutEggError
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにGCutProcessErrorを使ってください。
GCutEgg関連の操作で返されるエラーコード。
コマンドライン関連のエラー。 | |
入出力エラー。 | |
外部コマンドはすでに実行されています。 | |
外部こもアンドが実行されていません。 | |
不正なGCutEggオブジェクトが渡されました。 | |
タイムアウト。 |
1.0.6から
void gcut_egg_close (GCutEgg *egg
);
gcut_egg_close
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにGCutProcessを使ってください。
実行した外部コマンドのリソースを回収します。破棄されるときに暗黙的に回収されます。
|
GCutEgg |
1.0.6から
GQuark gcut_egg_error_quark (void
);
gcut_egg_error_quark
は非推奨です。新しいコードでは使わないでください。
gchar ** gcut_egg_get_env (GCutEgg *egg
);
gcut_egg_get_env
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_env()
を使ってください。
外部コマンドの環境変数を取得します。
|
GCutEgg |
戻り値 : |
新しく割り当てられたNULL 終端の環境変数のリスト("名前1=値1", "名前2=値2", ..., NULL )を返します。必要がなくなったらg_strfreev() で開放してください。 |
1.0.6から
GIOChannel * gcut_egg_get_error (GCutEgg *egg
);
gcut_egg_get_error
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_egg_get_error()
を使ってください。
外部プロセスのエラー出力に結びついたGIOChannelを返します。
|
GCutEgg |
戻り値 : |
外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL 。 |
1.0.6から
GSpawnFlags gcut_egg_get_flags (GCutEgg *egg
);
gcut_egg_get_flags
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_flags()
を使ってください。
外部コマンドを実行する時のflags
を取得します。
|
GCutEgg |
戻り値 : |
外部コマンドを実行するときのフラグ。 |
1.0.6から
guint gcut_egg_get_forced_termination_wait_time
(GCutEgg *egg
);
gcut_egg_get_forced_termination_wait_time
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_forced_termination_wait_time()
を使ってください。
オブジェクトが破棄されるときに行われる外部コマンド強制終了後に待つ時間(ミリ秒)を取得します。
|
GCutEgg |
戻り値 : |
破棄時の強制終了待ちの時間。 |
1.0.6から
GIOChannel * gcut_egg_get_input (GCutEgg *egg
);
gcut_egg_get_input
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_input_channel()
を使ってください。
外部プロセスの標準入力と結びついたGIOChannelを取得します。
|
GCutEgg |
戻り値 : |
外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL 。 |
1.0.6から
GIOChannel * gcut_egg_get_output (GCutEgg *egg
);
gcut_egg_get_output
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_output_channel()
を使ってください。
外部プロセスの標準出力と結びついたGIOChannelを取得します。
|
GCutEgg |
戻り値 : |
外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL 。 |
1.0.6から
GPid gcut_egg_get_pid (GCutEgg *egg
);
gcut_egg_get_pid
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_pid()
を使ってください。
実行している外部プロセスのプロセスIDを取得します。外部コマンドが実行されていない場合は0が返ります。
|
GCutEgg |
戻り値 : |
実行中の外部コマンドのプロセスID。実行していない場合は0。 |
1.0.6から
gboolean gcut_egg_hatch (GCutEgg *egg
,GError **error
);
gcut_egg_hatch
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_run()
を使ってください。
新しい外部プロセスを実行します。
1.0.6から
void gcut_egg_kill (GCutEgg *egg
,gint signal_number
);
gcut_egg_kill
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないで下さい。代わりにgcut_process_kill()
を使ってください。
外部プロセスにsignal_number
シグナルを送ります。
|
GCutEgg |
|
外部プロセスに送るシグナル番号。 |
1.0.6から
GCutEgg * gcut_egg_new (const gchar *command
,...
);
gcut_egg_new
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_new()
を使ってください。
command
を実行する新しいGCutEggオブジェクトを生成します。
|
実行する外部コマンド名。 |
|
command の引数 |
戻り値 : |
新しいGCutEgg。 |
1.0.6から
GCutEgg * gcut_egg_new_argv (gint argc
,gchar **argv
);
gcut_egg_new_argv
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_egg_new_argv()
を使ってください。
command
を実行する新しいGCutEggオブジェクトを生成します。
|
argv の要素数 |
|
実行する外部コマンド名とコマンド引数。 |
戻り値 : |
新しいGCutEgg。 |
1.0.6から
GCutEgg * gcut_egg_new_array (GArray *command
);
gcut_egg_new_array
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_egg_new_array()
を使ってください。
command
を実行する新しいGCutEggオブジェクトを生成します。
1.0.6から
GCutEgg * gcut_egg_new_strings (const gchar **command
);
gcut_egg_new_strings
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_new_strings()
を使ってください。
command
を実行する新しいGCutEggオブジェクトを生成します。
1.0.6から
GCutEgg * gcut_egg_new_va_list (const gchar *command
,va_list args
);
gcut_egg_new_va_list
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないで下さい。代わりにgcut_process_new_va_list()
を使ってください。
command
を実行する新しいGCutEggオブジェクトを生成します。
|
実行する外部コマンド名。 |
|
command の引数 |
戻り値 : |
新しいGCutEgg。 |
1.0.6から
void gcut_egg_set_env (GCutEgg *egg
,const gchar *name
,...
);
gcut_egg_set_env
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_set_env()
を使ってください。
外部コマンドの環境変数を設定します。
1.0.6から
void gcut_egg_set_flags (GCutEgg *egg
,GSpawnFlags flags
);
gcut_egg_set_flags
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_set_flags()
を使ってください。
外部コマンドを実行するときのflags
を設定します。
|
GCutEgg |
|
g_spawn_async_with_pipes() に渡すフラグ。 |
1.0.6から
void gcut_egg_set_forced_termination_wait_time (GCutEgg *egg
,guint timeout
);
gcut_egg_set_forced_termination_wait_time
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_egg_set_forced_termination_wait_time()
を使ってください。
オブジェクトが破棄されるときに行われる外部コマンド強制終了時に待つ時間(ミリ秒)を設定します。timeout
が0なら外部コマンドの終了を待ちません。デフォルト値は10です。
|
GCutEgg |
|
タイムアウト時間(ミリ秒) |
1.0.6から
gint gcut_egg_wait (GCutEgg *egg
,guint timeout
,GError **error
);
gcut_egg_wait
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_wait()
を使ってください。
実行中の外部プロセスが終了することをtimeout
ミリ秒待ちます。外部コマンドがtimeout
ミリ秒以内に終了しなかった場合は、GCUT_EGG_ERROR_TIMEOUT
エラーが設定され、-1が返ります。外部プロセスが実行されていない場合は、GCUT_EGG_ERROR_NOT_RUNNING
エラーが設定され、-1が返ります。
|
GCutEgg |
|
タイムアウト時間(ミリ秒) |
|
エラーを返すアドレスまたはNULL 。 |
戻り値 : |
外部プロセスが終了した場合は終了ステータス。そうでない場合は-1。 |
1.0.6から
gboolean gcut_egg_write (GCutEgg *egg
,const gchar *chunk
,gsize size
,GError **error
);
gcut_egg_write
はバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_write()
を使ってください。
外部プロセスの標準入力にchunk
を書き込みます。
|
GCutEgg |
|
書き込むデータ |
|
chunk のサイズ |
|
エラーを返すアドレスまたはNULL 。 |
戻り値 : |
成功したときはTRUE 、そうでない場合はFALSE 。 |
1.0.6から
"error"
シグナルvoid user_function (GCutEgg *egg,
gpointer error,
gpointer user_data) : Run Last
外部プロセス関連のエラーが発生した毎に発行されます。(例: 入出力エラー)
|
シグナルを受け取るオブジェクト。 |
|
外部プロセスのエラー。(GError ) |
|
シグナルハンドラが接続された時にユーザが指定したデータ。 |
1.0.6から
"error-received"
シグナルvoid user_function (GCutEgg *egg,
gchar *chunk,
guint64 size,
gpointer user_data) : Run Last
外部プロセスが標準エラー出力に出力したデータが読み込まれる毎に発行されます。
外部コマンドの出力が読み取り可能になったかどうかを検出するために、g_main_loop_run()
やg_main_context_iteration()
などでGLibのメインループをまわす必要があることに注意してください。
|
シグナルを受け取るオブジェクト。 |
|
外部プロセスの標準エラー出力から読み込んだデータ。 |
|
chunk のサイズ。(gsize ) |
|
シグナルハンドラが接続された時にユーザが指定したデータ。 |
1.0.6から
"output-received"
シグナルvoid user_function (GCutEgg *egg,
gchar *chunk,
guint64 size,
gpointer user_data) : Run Last
外部プロセスが標準出力に出力したデータが読み込まれる毎に発行されます。
外部コマンドの出力が読み取り可能になったかどうかを検出するために、g_main_loop_run()
やg_main_context_iteration()
などでGLibのメインループをまわす必要があることに注意してください。
|
シグナルを受け取るオブジェクト。 |
|
外部プロセスの標準出力から読み込んだデータ。 |
|
chunk のサイズ。(gsize ) |
|
シグナルハンドラが接続された時にユーザが指定したデータ。 |
1.0.6から
"reaped"
シグナルvoid user_function (GCutEgg *egg,
gint status,
gpointer user_data) : Run Last
外部プロセスが終了した時に発行されます。
外部コマンドが終了したこと検出するために、g_main_loop_run()
やg_main_context_iteration()
などでGLibのメインループをまわす必要があることに注意してください。
|
シグナルを受け取るオブジェクト。 |
|
外部プロセスの終了ステータス。 |
|
シグナルハンドラが接続された時にユーザが指定したデータ。 |
1.0.6から