簡體   English   中英

用C制作外殼時遇到麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM