如何创建一个将执行键盘读取的程序执行的子

时间:2015-06-25 20:02:02

标签: c system-calls

我试图用C系统调用来解决这个问题。 我想创建一个儿子,它将执行键盘读取的程序。 这是我到目前为止实施的......

void main(void) {

    char array[100];
    char character;
    char i = 0;
    do {
        character = getchar();
        array[i] = character;
        i++;
    }
    while (character != '\n');
    array[i-1] = '\0';

    pid_t  pid;
    pid = fork();

    if (pid == -1) {
        printf ("error");
    }
    else if (pid == 0)
    {
        if (execvp(*array, argv) < 0) {     /* execute the command  */
            printf("*** ERROR: exec failed\n");
            exit(1);
        } 
        else {
            int  i;
            for (i = 0; i < 10; i++)
            {
                printf("parent: %d\n", i);
                sleep(1);
            }
        exit(0);
        }
    }
}

这有什么不对? (不要注意括号..:D) 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

有些错误:

  1. while (character != '\n');将无所事事或永远陷入困境。
  2. 您永远不会声明argv,更不要在将其作为参数传递给execvp之前给它赋值。