Fork

Re: Fork

de Pablo Martin Baez Echevarria -
Número de respuestas: 0

Algo que quería rectificar es que siempre la salida va a ser de 8 líneas, pues se crean 7 procesos (aparte del original) y todos van a ejecutar necesariamente la línea printf("P%d", getpid()). En Perl, un programa equivalente podría ser:


use strict;

use warnings;

use POSIX qw(getpid);

fork();

fork();

fork();

printf "%Pd\n", getpid();


Podemos ejecutarlo desde la consola como

perl -MPOSIX -e 'fork; fork; fork; printf "P%d\n", getpid()'

O sabiendo que $-$ es una variable predefinida de Perl que tiene el pid del proceso actual, es equivalente a:

perl -le 'fork; fork; fork; print "P$-$"'

Escribo "$-$" con un guión en medio porque de lo contrario el editor me lo toma como un tag para escribir código latex y se ve mal, pero es dos signos de pesos sin guión entre medio. La salida que obtuve, fue:

[pablo@localhost ~]$ perl -le 'fork; fork; fork; print "P$-$"'

P15322

P15323

[pablo@localhost ~]$ P15327

P15326

P15325

P15324

P15329

P15328

Cuando el proceso original no es el último en terminar, la shell imprime el prompt inmediatamente y la salida queda un poco rara :P.


Saludos.