我有一个父进程和一个子进程,第二个用fork创建,子进程从父亲接收一个char s [](s可以是类似“cd Music”),我从“cd Music”中提取音乐使用strtok,但是当chdir(dir)执行时,我得到“没有这样的文件或目录”。但如果我测试chdir(“音乐”)我没有错误。我想更改子进程的工作目录。请帮帮我......
char *dir = strtok(s," ");
dir = strtok(NULL," ");
if(chdir(dir) == -1){
perror("Cannot change directory");
}
答案 0 :(得分:3)
fork()之后父子之间没有通信。这(伪代码)不起作用:
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 */
}
答案 1 :(得分:0)
尝试打印出目录的内容。也许它的价值不是你所期望的。