glib/tests/child-test.c
changeset 52 bf6a71c50e42
parent 18 47c74d1534e1
equal deleted inserted replaced
34:5fae379060a7 52:bf6a71c50e42
    60 GPid
    60 GPid
    61 get_a_child (gint ttl)
    61 get_a_child (gint ttl)
    62 {
    62 {
    63   GPid pid;
    63   GPid pid;
    64 #ifdef __SYMBIAN32__  
    64 #ifdef __SYMBIAN32__  
    65   gint retval;
       
    66 #if 0  //for using g_spawn_async
       
    67   gboolean retval;
    65   gboolean retval;
    68   char **argv = NULL;
    66   char **argv = NULL;
    69   GError *error = NULL;
    67   GError *error = NULL;
    70 #endif//if 0  
       
    71 #endif//__SYMBIAN32__  
    68 #endif//__SYMBIAN32__  
    72 #ifdef G_OS_WIN32
    69 #ifdef G_OS_WIN32
    73   STARTUPINFO si;
    70   STARTUPINFO si;
    74   PROCESS_INFORMATION pi;
    71   PROCESS_INFORMATION pi;
    75   gchar *cmdline;
    72   gchar *cmdline;
    87 
    84 
    88   CloseHandle (pi.hThread);
    85   CloseHandle (pi.hThread);
    89   pid = pi.hProcess;
    86   pid = pi.hProcess;
    90 
    87 
    91   return pid;
    88   return pid;
    92 #endif
    89 #endif //G_OS_WIN32
    93 #ifndef __SYMBIAN32__
    90 #ifndef __SYMBIAN32__
    94   pid = fork ();
    91   pid = fork ();
    95 #else  
    92 #else  
    96   retval = posix_spawn(&pid, "helloworld.exe", NULL,NULL,NULL,NULL);
       
    97   (void)waitpid(pid,NULL,0);
       
    98 #if 0  
       
    99   argv = (char **)malloc(3*sizeof(char *));    
    93   argv = (char **)malloc(3*sizeof(char *));    
   100   argv[0] = "Helloworld.exe"; // wrong exe name. Should cause g_spawn_async to fail
    94   argv[0] = "Helloworld.exe"; // wrong exe name. Should cause g_spawn_async to fail
   101   argv[1] = NULL;
    95   argv[1] = NULL;
   102   retval = g_spawn_async(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, "1234", &pid, &error);
    96   retval = g_spawn_async(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, "1234", &pid, &error);
   103 #endif//if 0
       
   104   if (pid < 0)
    97   if (pid < 0)
   105     exit (1);
    98     exit (1);
   106 
    99 
   107   if (pid > 0)
   100   if (pid > 0)
   108     return pid;
   101     return pid;
   109 
   102 
   110   sleep (ttl);
   103   sleep (ttl);
   111   _exit (0);
   104   _exit (0);
   112 #endif /* G_OS_WIN32 */
   105 #endif /*__SYMBIAN32__*/
   113 }
   106 }
   114 
   107 
   115 gboolean
   108 gboolean
   116 child_watch_callback (GPid pid, gint status, gpointer data)
   109 child_watch_callback (GPid pid, gint status, gpointer data)
   117 {
   110 {