Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348

    [C] fork e i vari exec

    Ciao a tutti!

    Ho creato un piccolo menu con le librerie GTK, premendo i vari pulsanti si devono avviare dei programmi!

    Il problema e' che i programmi si avviano ma si killa l'interfaccia!

    Sistema operativo GNU/Linux

    il comando che ho usato e':

    execl(path del binario, NULL);


    grazie a tutti ciao

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Posta un po' di codice altrimenti non è possibile darti una mano.

    Poi, quando hai a che fare con le fork() controlla di essere nel processo figlio quando esegui la execl, altrimenti vai a sovrascrivere il codice del padre (il menu) e di mettere in attesa il padre con una waitpid.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] fork e i vari exec

    Originariamente inviato da nomida
    Il problema e' che i programmi si avviano ma si killa l'interfaccia!

    Sistema operativo GNU/Linux

    il comando che ho usato e':

    execl(path del binario, NULL);
    Devi fare una fork() per creare un processo figlio e poi in quest'ultimo usare una delle execXX()
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    Appunto e' questo che non capisco a livello pratico!come faccio a sapere chi e' il figlio??
    nel primo caso si avviano 2 gxine e si killa il menu
    nel secondo parte gaim e si killa il menu!

    devo utilizzare il pid ritornato dal fork??

    codice:
    static void avvia( GtkWidget *widget, gpointer   data )
    {
      int i;
      // char c = (char *) data;
        i = atoi(data);
          g_print("%d\n", i);
    
    switch(i){
      case 1:
        //g_print ("Avviato - %s \n", (gchar *) data);
        i=fork();
        execl("/usr/bin/gxine", NULL);
        break;
    case 2:
      
        execle("/usr/local/gaim/bin/gaim", NULL);
        break;
      }
        
      
    
    }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nomida
    Appunto e' questo che non capisco a livello pratico!come faccio a sapere chi e' il figlio??
    Basta leggere la documentazione di fork!!!

    codice:
    pid_t p;
    
    p = fork ();
    
    if (p == 0)
    {
        /* figlio */
    }
    else if (p != -1)
    {
        /* padre */
    }
    else
    {
        /* errore */
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    ah cavoli hai ragione!

    grazie ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.