chdir не работает в c
У меня есть отчий процесс и дочерний процесс, второй, созданный с помощью 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 ответа
Нет связи между отцом и ребенком после разветвления (). Это (псевдокод) не работает:
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 */
}
Попробуйте распечатать содержимое каталога. Может быть, его значение не то, что вы ожидали.