chdir在c中不起作用

时间:2010-10-23 10:46:27

标签: c posix chdir

我有一个父进程和一个子进程,第二个用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");    
}

2 个答案:

答案 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)

尝试打印出目录的内容。也许它的价值不是你所期望的。