Problemilla con fork y chdir

IbLiS-

Buenas tarde, os expongo el codigo que tengo:

switch(pid=fork()){
case -1:
exit(0);
case 0:
switch(pid1=fork()){
case -1:
exit(0);
case 0:
chdir("/home/xxx/");
}
}

Esto lo que hace es crea el hijo, y dentro de el hago el chdir, sin consecuencias en el padre. Pero lo que a mi me interesa es que el padre se vea afectado por este cambio de directorio (osea que el padre tambien pase a "/home/xxx"); sino voy errado se puede hacer tocando una variable de env pero no me acuerdo exactamente como y no lo encuentro por ningun sitio.

edit: Aprovechando este post, me sabrias decir en que fallo cuando hago esto:
{{ ls -alis archivo | sort -u | grep arch } 2>log & { cat archivo | wc -c ;cd } 2>log } >salida
El shell se queda esperando que le entre algo, pero si lo pongo con paréntesis si me funciona.
Gracias

r2d2rigo

Has puesto el wait() de rigor para que el padre espere a que termine el hijo? Quiza asi te transmita el dir, si no quiza te toque piping :P

IbLiS-

#2 si, el programa me funciona bien, solo me queda ese pequeño detalle del chdir

LOc0

No entiendo bien qué quieres hacer, pero usando la etiqueta default del switch puedes irte por "la rama del padre" y meter otro chdir().


switch(pid=fork())
{

case -1:
exit(0);


case 0:
switch(pid1=fork())
{

case -1:
exit(0);


case 0:
chdir("/home/xxx/");
break;


default:
chdir("/home/xxx/");
break;

}
break;


}

Salu2 ;)

Usuarios habituales

  • LOc0
  • IbLiS-
  • r2d2rigo