我的目標是編寫一個類似於Linux的基本shell的C程序。除了更改工作目錄之外,我有一切工作。我試過system()
輸入字符串爲cd
並沒有發生任何事情。我也試過chdir("tokened string")
也沒有運氣。有人有主意嗎?這是我的代碼的一部分:在C程序中更改Linux shell中的工作目錄
fgets(cmdStr, sizeof(cmdStr), stdin);
if(strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0 )
{
break;
}
else if(strncmp("cd", cmdStr, 2) == 0)
{
char *token = strtok(cmdStr, " ");
token = strtok(NULL, " ");
chdir(token);
}
else
{
system(cmdStr);
}
}
是否有可能這樣做?或者這是一個簡單的例子,與兒童外殼不能做某些事情有關嗎?
編輯:上面的代碼是完整的。
'chdir'是正確的。它的回報價值是多少?如果-1,errno是什麼? (總是檢查系統調用的返回值。) – Nemo
@Nemo無論字符串是什麼,返回值都是-1。多次嘗試不同的字符串。不知道如何檢查它與-1一起產生的錯誤。有什麼建議麼? – yaegerbomb
檢查errno – hari