以下是我目前遇到以下问题的代码:
{{1}}
我现在有一个主要问题和一个小问题。主要问题是我在execvp启动之前有一个printf方法,它说" Child Process开始"我得到这行打印,但没有其他事情发生。没有中断被抛出,程序似乎在我的execvp命令上被冻结了。
我的小问题是,当我的程序启动提示时," osh>"在要求输入之前。现在,例如,如果我输入" osh> ls -l"然后我得到args [0] = s,args 1 = -l。现在,如果我把" osh> ls -l"在那种确切的格式中,我得到args [0] = ls,args 1 = -l。这是scanf()的一部分,我在这里没有正确使用,以确保我在" osh>"在空格之间作为字符串?
答案 0 :(得分:0)
您遇到丢失字符时遇到的问题是因为getchar()
在scanf
对其进行攻击之前消耗了输入的第一个字符。你可能想做类似的事情:
while (scanf("%s", &buffer) > 0)
{
strcpy(args[i], buffer);
/* then do stuff with args[i] */
}