2010-10-23 91 views
1

我有一個父進程和一個子進程,第二個用fork創建,孩子從父親那裏得到一個char s [](s可以是類似「cd Music」的東西),我使用strtok從「cd Music」中提取音樂,但是當chdir(dir)執行時,我會得到「沒有這樣的文件或目錄」。但是,如果我測試chdir(「音樂」),我沒有錯誤。我想更改子進程的工作目錄。請幫助我...chdir不能在c工作

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

回答

0

嘗試打印出目錄的內容。也許它的價值不符合你的預期。

+0

或者使用他可用的'gdb'或任何調試器。 – alternative 2010-10-23 11:06:48

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 */ 
}