2010-10-23 2 views
1

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

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

ответ

0

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

+0

Или используйте 'gdb' или любой другой отладчик он доступен. – alternative

3

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

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 */ 
}