chdir не работает в c - PullRequest
       8

chdir не работает в c

1 голос
/ 23 октября 2010

У меня есть процесс отца и дочерний процесс, второй, созданный с помощью fork, ребенок получает от отца символ s [] (это может быть что-то вроде "cd Music"), я извлекаю музыку из "CD Music" используя strtok, но когда chdir (dir) выполняется, я получаю «Нет такого файла или каталога». Но если я тестирую chdir ("Музыка"), я не получаю ошибки. Я хочу изменить рабочий каталог дочернего процесса. Помогите мне, пожалуйста ...

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

Ответы [ 2 ]

3 голосов
/ 23 октября 2010

Нет связи между отцом и ребенком после развилки ().Это (псевдокод) не работает:

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

Это работает

int s[100] = "cd Music";
if (fork()) {
    /* father */
    /* ... */
} else {
    /* use children's copy of s */
}
0 голосов
/ 23 октября 2010

Попробуйте распечатать содержимое каталога. Возможно, его значение не соответствует вашим ожиданиям.

...