2010-10-23 4 views
1

J'ai un processus père et un processus enfant, le second créé avec fork, l'enfant reçoit du père un s char [] (s peut être quelque chose comme "cd Music"), je extraire de la musique à partir de "cd Music" en utilisant strtok, mais quand chdir (dir) s'exécute je reçois "No tel fichier ou répertoire". Mais si je teste chdir ("Musique") je n'obtiens aucune erreur. Je veux changer le répertoire de travail du processus enfant. Aidez-moi s'il vous plaît ...chdir ne fonctionne pas en c

char *dir = strtok(s," "); 
dir = strtok(NULL," "); 
if(chdir(dir) == -1){ 
    perror("Cannot change directory");  
} 

Répondre

0

Essayez d'imprimer le contenu de dir. Peut-être que sa valeur n'est pas ce que vous attendiez.

+0

Ou utilisez 'gdb' ou tout débogueur dont il dispose. – alternative

3

Il n'y a pas de communication entre le père et l'enfant après la fourche(). Ce (pseudo-code) ne fonctionne pas:

int s[100]; 
if (fork()) { 
    /* father */ 
    strcpy(s, "cd Music"); /* pass string to child -- NOT! */ 
    /* ... */ 
} else { 
    /* use uninitialized s */ 
} 

Cela fonctionne

int s[100] = "cd Music"; 
if (fork()) { 
    /* father */ 
    /* ... */ 
} else { 
    /* use children's copy of s */ 
} 
Questions connexes