External command (deprecated)

External command (deprecated) — 外部コマンドを使うための便利API(非推奨)

Functions

プロパティ

gpointer command Read / Write

シグナル

Types and Values

オブジェクト階層

GObject
    ╰── GCutEgg

説明

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()を使うことができます。無限待ちを避けるために、タイムアウトを指定することができます。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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, "output-received",
                     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);
}

Functions

gcut_egg_error_quark ()

GQuark
gcut_egg_error_quark (void);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。


gcut_egg_new ()

GCutEgg *
gcut_egg_new (const gchar *command,
              ...);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

追加メッセージ(省略可能)。詳細はcut_message()を見てください。

commandを実行する新しいGCutEggオブジェクトを生成します。

Parameters

command

実行する外部コマンド名。

 

...

commandの引数

 

Returns

新しいGCutEgg

Since: 1.0.6


gcut_egg_new_va_list ()

GCutEgg *
gcut_egg_new_va_list (const gchar *command,
                      va_list args);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

commandを実行する新しいGCutEggオブジェクトを生成します。

Parameters

command

実行する外部コマンド名。

 

args

commandの引数

 

Returns

新しいGCutEgg

Since: 1.0.6


gcut_egg_new_argv ()

GCutEgg *
gcut_egg_new_argv (gint argc,
                   gchar **argv);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

commandを実行する新しいGCutEggオブジェクトを生成します。

Parameters

argc

argvの要素数

 

argv

実行する外部コマンド名とコマンド引数。

 

Returns

新しいGCutEgg

Since: 1.0.6


gcut_egg_new_strings ()

GCutEgg *
gcut_egg_new_strings (const gchar **command);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

使用例はcut_assert_equal_string()を見てください。

commandを実行する新しいGCutEggオブジェクトを生成します。

Parameters

command

実行する外部コマンド名とコマンド引数。NULL終端。

 

Returns

新しいGCutEgg

Since: 1.0.6


gcut_egg_new_array ()

GCutEgg *
gcut_egg_new_array (GArray *command);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

commandを実行する新しいGCutEggオブジェクトを生成します。

Parameters

command

実行する外部コマンド名とコマンド引数。GArrayは0終端にして下さい。

 

Returns

新しいGCutEgg

Since: 1.0.6


gcut_egg_set_flags ()

void
gcut_egg_set_flags (GCutEgg *egg,
                    GSpawnFlags flags);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部コマンドを実行するときのflagsを設定します。

Parameters

egg

GCutEgg

 

flags

g_spawn_async_with_pipes()に渡すフラグ。

 

Since: 1.0.6


gcut_egg_get_flags ()

GSpawnFlags
gcut_egg_get_flags (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部コマンドを実行する時のflagsを取得します。

Parameters

egg

GCutEgg

 

Returns

外部コマンドを実行するときのフラグ。

Since: 1.0.6


gcut_egg_set_env ()

void
gcut_egg_set_env (GCutEgg *egg,
                  const gchar *name,
                  ...);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_expected()も見てください。

外部コマンドの環境変数を設定します。

Parameters

egg

GCutEgg

 

name

最初の環境変数名。

 

...

nameに対応する値。その後に、名前と値のペアを任意の数だけ指定します。最後の引数はNULLにしてください。

 

Since: 1.0.6


gcut_egg_get_env ()

gchar **
gcut_egg_get_env (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_expected()も見てください。

外部コマンドの環境変数を取得します。

Parameters

egg

GCutEgg

 

Returns

新しく割り当てられたNULL終端の環境変数のリスト("名前1=値1", "名前2=値2", ..., NULL)を返します。必要がなくなったらg_strfreev()で開放してください。

Since: 1.0.6


gcut_egg_hatch ()

gboolean
gcut_egg_hatch (GCutEgg *egg,
                GError **error);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

新しい外部プロセスを実行します。

Parameters

egg

GCutEgg

 

error

エラーを返すアドレスまたはNULL

 

Returns

成功したときはTRUE、そうでない場合はFALSE

Since: 1.0.6


gcut_egg_close ()

比較するguintGList

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

GCutProcessオブジェクト。

実行した外部コマンドのリソースを回収します。破棄されるときに暗黙的に回収されます。

Parameters

egg

GCutEgg

 

Since: 1.0.6


gcut_egg_write ()

gboolean
gcut_egg_write (GCutEgg *egg,
                const gchar *chunk,
                gsize size,
                GError **error);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_expected()も見てください。

外部プロセスの標準入力にchunkを書き込みます。

Parameters

egg

GCutEgg

 

chunk

書き込むデータ

 

size

chunkのサイズ

 

error

エラーを返すアドレスまたはNULL

 

Returns

成功したときはTRUE、そうでない場合はFALSE

Since: 1.0.6


gcut_egg_get_pid ()

比較するguintGList

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_expected()も見てください。

実行している外部プロセスのプロセスIDを取得します。外部コマンドが実行されていない場合は0が返ります。

Parameters

egg

GCutEgg

 

Returns

実行中の外部コマンドのプロセスID。実行していない場合は0。

Since: 1.0.6


gcut_egg_wait ()

gint
gcut_egg_wait (GCutEgg *egg,
               guint timeout,
               GError **error);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

実行中の外部プロセスが終了することをtimeoutミリ秒待ちます。外部コマンドがtimeoutミリ秒以内に終了しなかった場合は、GCUT_EGG_ERROR_TIMEOUTエラーが設定され、-1が返ります。外部プロセスが実行されていない場合は、GCUT_EGG_ERROR_NOT_RUNNINGエラーが設定され、-1が返ります。

Parameters

egg

GCutEgg

 

タイムアウト。

タイムアウト時間(ミリ秒)

 

error

エラーを返すアドレスまたはNULL

 

Returns

外部プロセスが終了した場合は終了ステータス。そうでない場合は-1。

Since: 1.0.6


gcut_egg_kill ()

void
gcut_egg_kill (GCutEgg *egg,
               gint signal_number);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部プロセスにsignal_numberシグナルを送ります。

Parameters

egg

GCutEgg

 

signal_number

外部プロセスに送るシグナル番号。

 

Since: 1.0.6


gcut_egg_get_input ()

GIOChannel *
gcut_egg_get_input (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部プロセスの標準入力と結びついたGIOChannelを取得します。

Parameters

egg

GCutEgg

 

Returns

外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL

Since: 1.0.6


gcut_egg_get_output ()

GIOChannel *
gcut_egg_get_output (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部プロセスの標準出力と結びついたGIOChannelを取得します。

Parameters

egg

GCutEgg

 

Returns

外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL

Since: 1.0.6


gcut_egg_get_error ()

GIOChannel *
gcut_egg_get_error (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

cut_set_actual()も見てください。

外部プロセスのエラー出力に結びついたGIOChannelを返します。

Parameters

egg

GCutEgg

 

Returns

外部プロセスが実行中の場合はGIOChannel。そうでない場合はNULL

Since: 1.0.6


gcut_egg_get_forced_termination_wait_time ()

guint
gcut_egg_get_forced_termination_wait_time
                               (GCutEgg *egg);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

gcut_egg_get_forced_termination_wait_timeはバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_process_get_forced_termination_wait_time()を使ってください。

オブジェクトが破棄されるときに行われる外部コマンド強制終了後に待つ時間(ミリ秒)を取得します。

Parameters

egg

GCutEgg

 

Returns

破棄時の強制終了待ちの時間。

Since: 1.0.6


gcut_egg_set_forced_termination_wait_time ()

void
gcut_egg_set_forced_termination_wait_time
                               (GCutEgg *egg,
                                guint timeout);

gcut_egg_error_quarkは非推奨です。新しいコードでは使わないでください。

gcut_egg_set_forced_termination_wait_timeはバージョン1.1.5から非推奨になりました。新しく書くコードでは使わないでください。代わりにgcut_egg_set_forced_termination_wait_time()を使ってください。

オブジェクトが破棄されるときに行われる外部コマンド強制終了時に待つ時間(ミリ秒)を設定します。timeoutが0なら外部コマンドの終了を待ちません。デフォルト値は10です。

Parameters

egg

GCutEgg

 

タイムアウト。

タイムアウト時間(ミリ秒)

 

Since: 1.0.6

Types and Values

GCUT_EGG_ERROR

#define GCUT_EGG_ERROR           (gcut_egg_error_quark())

GCUT_EGG_ERRORは非推奨です。新しいコードでは使わないでください。


enum GCutEggError

GCutEggは非推奨です。新しいコードでは使わないでください。

GCutProcess

GCutEgg関連の操作で返されるエラーコード。

Members

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

不正なGCutEggオブジェクトが渡されました。

 

GCUT_EGG_ERROR_TIMEOUT

タイムアウト。

 

Since: 1.0.6

プロパティ詳細

"command"プロパティ

“command”                  gpointer

実行する外部コマンド。

Owner: GCutEgg

Flags: Read / Write

シグナル詳細

"error"シグナル

void
user_function (GCutEgg *egg,
               gpointer error,
               gpointer user_data)

It is emitted each time an external process causes an error. (e.g. IO error)

Parameters

egg

the object which received the signal.

 

error

the error of an external process. (GError)

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 1.0.6


"error-received"シグナル

void
user_function (GCutEgg *egg,
               gchar   *chunk,
               guint64  size,
               gpointer user_data)

It is emitted each time an external process outputs something to its standard error output and it is read.

Note that you need to run GLib's main loop by g_main_loop_run(), g_main_context_iteration() and so on for detecting an external process's output is readable.

Parameters

egg

the object which received the signal.

 

chunk

the chunk read from an external process's standard error output.

 

size

the size of chunk . (gsize)

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 1.0.6


"output-received"シグナル

void
user_function (GCutEgg *egg,
               gchar   *chunk,
               guint64  size,
               gpointer user_data)

It is emitted each time an external process outputs something to its standard output and it is read.

Note that you need to run GLib's main loop by g_main_loop_run(), g_main_context_iteration() and so on for detecting an external process's output is readable.

Parameters

egg

the object which received the signal.

 

chunk

the chunk read from an external process's standard output.

 

size

the size of chunk . (gsize)

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 1.0.6


"reaped"シグナル

void
user_function (GCutEgg *egg,
               gint     status,
               gpointer user_data)

It is emitted when an external process is exited.

Note that you need to run GLib's main loop by g_main_loop_run(), g_main_context_iteration() and so on for detecting an external process is exited.

Parameters

egg

the object which received the signal.

 

status

the exit status of an external process.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 1.0.6