#include #include #include #include #include enum envpOption { ENVP_NULL, ENVP_PATH, ENVP_MISC }; void spawnproc(envpOption opt) { gchar * argv[2]; gchar * envp[2]; gchar * g_stdoutBuffer = NULL; gchar * g_stderrBuffer = NULL; gboolean resultStatus; int exit_status; GError * gerr = NULL; GSpawnFlags flags = (GSpawnFlags)(G_SPAWN_SEARCH_PATH); argv[0] = (gchar*)"./my_environ.exe"; argv[1] = NULL; if (opt == ENVP_MISC) { envp[0] = (gchar *)"HELLO=world"; envp[1] = NULL; resultStatus = g_spawn_sync("/home/mfisch/gspawn_issue", argv, envp, flags, NULL, NULL, &g_stdoutBuffer, &g_stderrBuffer, &exit_status, &gerr); } else if (opt == ENVP_PATH) { envp[0] = (gchar *)"PATH=/usr/bin"; envp[1] = NULL; resultStatus = g_spawn_sync("/home/mfisch/gspawn_issue", argv, envp, flags, NULL, NULL, &g_stdoutBuffer, &g_stderrBuffer, &exit_status, &gerr); } else if (opt == ENVP_NULL) { resultStatus = g_spawn_sync("/home/mfisch/gspawn_issue", argv, NULL, flags, NULL, NULL, &g_stdoutBuffer, &g_stderrBuffer, &exit_status, &gerr); } if (gerr) { g_warning("error: %s",gerr->message); } if (g_stdoutBuffer) { g_debug("result:\n%s",g_stdoutBuffer); } if (!resultStatus) { g_warning("error: spawn failed"); } } int main(void) { g_debug("Calling my_environ with envp set to HELLO=world"); spawnproc(ENVP_MISC); g_debug("------------------------------------"); g_debug("Calling my_environ with envp set to PATH=/usr/bin"); spawnproc(ENVP_PATH); g_debug("------------------------------------"); #if 0 g_debug("Calling my_environ with envp Disabled"); spawnproc(ENVP_NULL); g_debug("------------------------------------"); #endif }