0

GtkListStore からデータを読み込み、phpExcel で Excel を作成したいと考えています。まず、GtkListStore に従って php ファイルをビルドし、次に php と phpexcel lib を使用して execl ファイルをコンパイルおよびビルドします。

私の gtk コード (MinGW 環境でコンパイル) ではexecvp(cmd[0], (const char **)cmd);、外部コマンド -- php を呼び出すために使用します。実は、cmd[0]php.exe と cmd[1]、cmd[2] … は php のパラメータです。php コマンドを呼び出した後、gtk メイン ウィンドウが閉じられ、gtk プログラムが終了します。

php コマンドがメインプログラムを終了しないようにするにはどうすればよいですか? の代わりに何か他のものを使用する必要がありexecvpますか? ありがとうございました。

4

2 に答える 2

0

execvp()友達が現在のプロセスを別のプロセスに置き換えるので、プログラムが終了しても不思議ではありません。または関連する関数を使用g_spawn_sync()して、php プログラムを実行し、制御を元のプログラムに戻します。

于 2012-09-03T08:46:58.163 に答える
0

私自身の質問に答えさせてください。以下は、過去数日以内に私がググって試したことの要約です。新しいものは何もありませんが、私のような初心者には役立つかもしれません。

まず、ptomatoに感謝します。GTK で私の問題を回避するには、g_spawn_syncまたは関連する関数を使用する必要があります。コマンドが絶対パスの場合、フラグを使用する必要はありませんG_SPAWN_SEARCH_PATH。それ以外の場合は、必ずフラグを使用してください。

以下は、環境に関連するものMinGWです。

-> gspawn-win32-helper.exe
MinGW で g_spawn_sync を使用するには、インストールされている必要がありますgspawn-win32-helper.exe。GTK 環境をインストールしたとき、便利な lib または exe ファイルのみを抽出しました。これは便利だと思いますが、gspawn-win32-helper.exe を見逃してしまいFailed to execute helper program (No such file or directory)、上記のコメントに記載されている問題が発生しました。ftp://ftp.gtk.org/pub/glib/2.10/win32/glib-2.10.0.zipから gspawn-win32-helper.exe を抽出してインストールすると、g_spawn_sync が機能しました。

-> 正規の Windows パスでは、2 つのバックスラッシュと 1 つのスラッシュの両方が機能します。たとえば、c:/foo/bar と c:\foo\bar が機能します。

于 2012-09-06T08:17:50.690 に答える