1

我有一个父进程和一个子进程,第二个是用 fork 创建的,子进程从父亲那里收到一个 char s[] (s 可以是“cd Music”之类的东西),我使用 strtok 从“cd Music”中提取音乐,但是当 chdir(dir) 执行时,我得到“没有这样的文件或目录”。但是如果我测试 chdir("Music") 我没有错误。我想更改子进程的工作目录。请帮帮我...

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

2 回答 2

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 */
}
于 2010-10-23T11:08:26.807 回答
0

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

于 2010-10-23T11:02:46.000 回答