Scrivere un programma C in cui un processo crea un processo figlio
• Il processo figlio calcola la sequenza di Fibonacci di ordine n (n<=12).
Quando termina restuisce il valore calcolato come codice di terminazione
• Il padre attende la terminazione del figlio ed esamina lo stato di terminazione
• Se lo stato di terminazione è relativo ad una terminazione con successo
e il codice di terminazione è un valore minore di 50
• Crea un secondo figlio che esegue il comando ls –al a.out
• Attende il secondo figlio, stampa un messaggio e termina
• Altrimenti, stampa un messaggio e termina
- /*
- Scrivere un programma C in cui un processo crea un processo figlio
- • Il processo figlio calcola la sequenza di Fibonacci di ordine n (n<=12).
- Quando termina restuisce il valore calcolato come codice di terminazione
- • Il padre attende la terminazione del figlio ed esamina lo stato di terminazione
- • Se lo stato di terminazione è relativo ad una terminazione con successo
- e il codice di terminazione è un valore minore di 50
- • Crea un secondo figlio che esegue il comando ls –al a.out
- • Attende il secondo figlio, stampa un messaggio e termina
- • Altrimenti, stampa un messaggio e termina
- */
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- int Fibonacci(int n)
- {
- if ( n == 0 )
- return 0;
- else if ( n == 1 )
- return 1;
- else
- return ( Fibonacci(n-1) + Fibonacci(n-2) );
- }
- int main(int argc, char *argv[]) {
- int x;
- int codice_di_terminazione,statloc,n=atoi(argv[1]);
- pid_t pid;
- pid_t pid2;
- pid = fork();
- if(pid == 0) {
- x = Fibonacci(n);
- printf("%d - %d\n",n,x);
- exit(x);
- } else {
- printf("In attesa..");
- waitpid(pid, &statloc, 0);
- codice_di_terminazione = WEXITSTATUS(statloc);
- if(WIFEXITED(statloc) == 1 && codice_di_terminazione<50) {
- pid2 = fork();
- if(pid2 == 0) {
- execl("/bin/ls", "ls", "-l", "a.out", NULL);
- } else {
- waitpid(pid2, &statloc, 0);
- printf("Ho fatto un altro figlio perchè è andato tutto bene \n");
- }
- } else {
- printf("Mio figlio1 %d è terminato, codice terminazione %d\n",pid,codice_di_terminazione
- );
- }
- }
- return 0;
- }
Learn More :
Italian
- C del programma: si assume che B è un array di n> 0 cifre binarie, la seguente funzione calcola il valore decimale rappresentato da b in forma binaria
- C Program Problem's Solution For General Hospital
- Sviluppare una function C che, dati come parametri di input un array di char e il suo size, determina e restituisce come parametro di un dato logico che indica se il testo nell’array è un pangramma, ovvero è un testo che contiene, almeno una volta, tutte le 21 lettere dell’alfabeto italiano.
- Sviluppare una function C che, dati come parametri di input un array di char e il suo size
- Sviluppare una funzione C che , dato come parametri di ingresso un array di char e la sua dimensione
- C Programma Dato un elenco ( matrice) delle persone che partecipano ad un concorso , ordinare l'elenco in ordine alfabetico per l'ultimo campo nome.
- Scrivere un programma C per simulare immettere il PIN per il telefono .
- C Programma Due giocatori sfida lanciando un " dado truccato . " Il dado ha Integer gamma [ 5 , 15 ] .
- Scrivere un programma C che: Crea un processo figlio, stampa il messaggio “In attesa” ed attende la terminazione del figlio.
- Realizzare un programma C e Posix sotto Linux che con l'uso dei semafori Posix sincronizzi un processo padre
- Allocare una matrice dinamicamente di dimensione NxN dove n è un numero pari, inserito come input al programma ( argv ).
- C Programma per convertire la stringa in un intero
- C programma per trovare posizione del punto di coordinate Aereo