我目前正在用C编写一个shell程序。我已经掌握了大部分基础知识,但我似乎无法弄清楚如何获得&#34 ;;"正确地工作,也就是说当我键入类似" command1;命令2"当shell运行时,它执行第一个命令,然后执行第二个命令。现在,它基本上具有与" |"相同的功能。命令。这是我&#34 ;;"的代码。命令部分:
char* cmd = line;
char* also = strchr(cmd, ';'); /* Finds first ';'*/
char* next = strchr(cmd, '|'); /* Find first '|' */
while (also != NULL){
/* 'also' points to ';' */
*also = '\0';
input = go(cmd, input, first, 0);
cmd = also + 1;
also = strchr(cmd, ';'); /* Find next ';' */
first = 0;
}
`
任何人都有关于我如何正常工作的提示?提前谢谢!
答案 0 :(得分:0)
您的代码存在的问题是,当您输入command1 ; command2
时,您将执行command1
,但由于您正在寻找另一个;
command2
,因此永远不会已执行,因为也将设置为null
。将执行command1 ; command2 ;
的输入。
如果您正在阅读标准输入中的;
或'\n'
,或者如果您正在阅读\n
或#EOF
,那么您想要做的就是从文件。所以你需要在这一行做出改变:
also = strchr(cmd, ';');
祝你好运。