DOMANDA Processi in Linux

Pubblicità

liiuk

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
22
Salve a tutti, vorrei porvi una domanda abbastanza concettuale. Mi trovo in ambiente linux Ubuntu. Avvio la shell. Ho dunque creato un processo?
Bene ho a shell avviata e decido di eseguire un file di testo che contiene
Codice:
 int main (){
int ppid=getppid();
kill(ppid, SIGKILL);}
il risultato è la chiusura della shell!! Posso concludere che avviando la shell ho creato un processo, che eseguendo tale file sulla shell ho creato un processo figlio che ha mandato un segnale SIGKILL al padre terminandolo?
grazie in anticipo
 
Diciamo di si, sei stato però un po' impreciso nella terminologia, più precisamente

1. non esegui il file di testo, semmai esegui l'eseguibile ottenuto dal compilatore
2. il codice che hai messo è incompleto perché mancano due include necessari

Codice:
#include <unistd.h>
#include  <signal.h>

 int main (){
    int ppid=getppid();
    kill(ppid, SIGKILL);
}
 
Grazie. Ma quindi accade che un figlio termina il padre? :nunu:
E se io invece di avviare questo file compilato avviassi sempre dalla shell un file contenente una fork? dalla teoria so che al termine della fork io avrò un processo padre ed uno figlio...dunque tornando al mio caso, nella pratica, la shell(padre) esegue la fork e crea un processo figlio?
 
Grazie. Ma quindi accade che un figlio termina il padre? :nunu:

Stando a quel codice, si il figlio termina il padre.

E se io invece di avviare questo file compilato avviassi sempre dalla shell un file contenente una fork?

Devo chiederti se hai ben chiaro il meccanismo tramite il quale si parte da un file C e si ottiene un file binario eseguibile. Solo gli eseguibili possono essere avviati/eseguiti/runnati/fatti girare. Non esiste che tu possa avviare un file C non compilato.

dalla teoria so che al termine della fork io avrò un processo padre ed uno figlio...dunque tornando al mio caso, nella pratica, la shell(padre) esegue la fork e crea un processo figlio?

Non proprio. Quando scrivi il nome dei file eseguibile nella shell ( e ribadisco che i file C NON SONO eseguibili ), la shell effettua una fork, creando un nuovo processo al cui interno verrà eseguito l'eseguibile richiesto. Quindi avrai un processo per la shell + uno per l'eseguibile. A sua volta, l'eseguibile eseguirà una fork creando un terzo processo. Il processo dell'eseguibile sarà il padre ( il cui padre è a sua volta la shell ), mentre il processo forkato sarà il figlio.
 
Pubblicità
Pubblicità
Indietro
Top