[英]Unix Shell in C - Change Directory
我是使用簡單Shell的另一位CS初學者。 目前,如果要傳遞參數,我將嘗試更改當前目錄,否則,請報告當前目錄。
我嘗試在程序中使用chdir()
,但顯然無法正常工作。 我嘗試傳遞一個已標記化的char*
參數。 我也嘗試過使用argv[1]
,但是我必須做錯了什么,因為兩者似乎都不起作用。
另外,我不確定如何使參數指針(包含目錄字符串)靜態化,因此當我使用putenv(ARGUMENT HERE)時沒有問題。
這是我的代碼的相關部分:
else if (strncmp(command[0], "cd", 2) == 0)
{
char *argmnts = strtok(0, " ");
if (arguments != NULL)
{
chdir(argmnts);
putenv(argmnts); // THE ARG STRING NEEDS TO BE A STATIC COPY
getcwd(promptBuff, sizeof(argmnts));
}
}
指針argmnts指向以下char strnBuffer[1000]
的標記化參數部分: char strnBuffer[1000]
,該char strnBuffer[1000]
已為命令標記化: command[0] = strtok(strnBuffer, " ");
我非常感謝您的幫助/見解。
謝謝。
您可能在輸入行的末尾有一個'\\n'
。 您的strtok
僅將空格識別為分隔符,因此不會碰到換行符。 chdir("dir\\n")
將會失敗,除非您實際上有一個目錄,其名稱末尾帶有換行符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.