Buonasera! Sto utilizzando la system call execv ma non riesco a comprenderne il funzionamento. So che va a sostituire il processo corrente con quello passato come parametro della funzione stessa, per cui non fa eseguire tutto ciò che è DOPO la chiamata a funzione. In questo codice:

int main(int argc, char **argv) {
    if(argc != 2) {
        fprintf(stdout, "Errore");
        exit(-1);
    }
    char *elenco[] = { "ls","-laR", "/home/andrea/Desktop/Laboratorio/laboratorio1",
        (char*)0 };

    fprintf(stdout,"Ciao");
    if(fork())
        execv("/bin/ls", elenco); 
    fprintf(stdout,"come stai?");
    return 0;
}

mi aspetto che nel processo padre stampi "Ciao" e in seguito stampi il contenuto della cartella laboratorio1, nel processo figlio invece deve stampare "Ciaocome stai?". Perchè invece "Ciao" non viene stampato nel processo padre? Grazie!

chiesto 24 Jul '15, 18:28

Strcmp_01's gravatar image

Strcmp_01
457711

modificato 24 Jul '15, 19:35

dadexix86's gravatar image

dadexix86 ♦♦
17.0k916161


Se vuoi che venga stampato entrambe le volte devi mettere la stampa di "Ciao" sia nel padre che nel figlio, altrimenti viene stampato una sola volta prima di effettuare la fork.

coll. permanente

ha risposto 24 Jul '15, 20:52

dslul's gravatar image

dslul
9632416

Grazie! A volte mi confondo ancora pensando che il processo clonato riprenda da zero.

(25 Jul '15, 08:26) Strcmp_01 Strcmp_01's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×109
×22

domanda posta: 24 Jul '15, 18:28

domanda visualizzata: 1,688 volte

ultimo aggiornamento: 25 Jul '15, 08:26

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.