fork
es el que esperáis.
raise(SIGSTOP);
dentro del
programa en C y donde queréis que se pare.
&
). Esperáis a que se creen y se paren los hijos
y observáis los procesos con ps -f
... Mirad no
sólo su número sino su árbol familiar para ver si todo está en
orden.
pause()
). Cuando
estén todos dispuestos, mandáis la señal desde la shell al
proceso para ver si reacciona bien. Si el proceso reacciona
bien, investigad el emisor; si no, el receptor.
printf
s), acompañad
siempre cada mensaje con el PID del proceso que lo escribe:
printf("%d: La variable caries vale: %d.\n", getpid(), caries); fflush(stdout);Aunque poniendo un
\n
al final del printf
debería garantizar que sale de inmediato por la pantalla, por
si acaso, poned un fflush(stdout)
después.
gdb
) cuando depura un
programa que hace un fork
, sigue por el código
del padre. Lo que ya no es tan seguro que conozcáis es que
podéis también depurar el código del hijo.
gdb
y le especificáis en la línea
de órdenes el nombre
del ejecutable que esté ejecutando el hijo (que os recuerdo
que tiene que estar compilado con la opción -g
)
y el PID del hijo. Tened en cuenta que os vais a "montar"
en el hijo en marcha. Por lo tanto, para tomar control de
él y ejecutarlo paso a paso, por ejemplo, os las tendréis que
ingeniar ;) .