PDA

View Full Version : [C-LINUX-UNIX] cosa fa sto codice?


xglobusx
19-08-2006, 14:14
#include <stdio.h>
#include <unistd.h>

int i = 0;
int main(int argc, char ** argv){
printf("%d %d\n", getpid(), ++i);
execl(argv[0], argv[0], 0);
printf("Fine\n");
}

usa la cpu al 100% senza stampare nulla, non dovrebbe stampare almeno il pid e il valore di i?

il_luridone
19-08-2006, 14:54
execl esegue il file arg[0] che è il nome del programma.

Hai la CPU al 100% perchè si richiama all'infinito.

man 3 execl (http://www.penguin-soft.com/penguin/man/3/exec.html)

NA01
19-08-2006, 16:10
comunque stampare dovrebbe stampare.
il punto è che non viene stampato immediatamente a schermo quello che viene scritto dalla printf. credo (non ne sono sicurissimo) che il contenuto del buffer di stdout venga messo a schermo solo se incontra un terminatore o se si riempie.
ti conviene utilizzare
fprintf
utilizzando come canale stderr che non è bufferizzato.

ciao!

71104
20-08-2006, 13:43
oppure può esplicitare il flush del buffer con fflush