使用fork()和execvp()函数创建C程序时遇到问题

时间:2016-03-03 20:44:32

标签: c fork ipc scanf execvp

以下是我目前遇到以下问题的代码:

{{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>"在空格之间作为字符串?

编辑: 这是我输出的用户输入" ls -l" Output for prog.c

1 个答案:

答案 0 :(得分:0)

您遇到丢失字符时遇到的问题是因为getchar()scanf对其进行攻击之前消耗了输入的第一个字符。你可能想做类似的事情:

while (scanf("%s", &buffer) > 0)
{
    strcpy(args[i], buffer);
    /* then do stuff with args[i] */
}