繁体   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