1

父プロセスと子プロセスがあり、2 番目は 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 に答える