[英]Trouble with making a shell in C
所以我試圖在c中制作一個shell腳本。 它必須執行以下操作:*根據用戶輸入退出; 退出*處理最多包含一個參數的命令
作為內部流程和流程控制的初學者,我遇到了麻煩,可能會使用正確方向的觀點。 由於某種原因,無論輸入什么內容,它都只能執行打印。 這就是我現在所擁有的,我錯過了什么嗎? 還是我做錯了什么?
int main(){
int total_args;
char *arg[3];
pid_t cpid;
char shell_prompt[] = "console:";
char line[MAX_LINE];
char command[MAX_LINE];
char argument[MAX_LINE];
while(!0){
printf("%s", shell_prompt);
fgets(line, MAX_LINE, stdin);
total_args = sscanf(line, "%s %s", command, command_argument);
arg[0] = (char *) malloc(strlen(command));
.....
}
為要復制的字符串分配存儲空間時,需要為'\\0'
終止符添加一個附加字符,因此:
arg[1] = (char *) malloc(strlen(command_argument));
需要是:
arg[1] = malloc(strlen(command_argument) + 1);
否則,隨后對strcpy
將超出分配的存儲范圍寫入。
還要注意,我已經刪除了對malloc的結果進行的多余且有潛在危險的轉換 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.