Unix - C - 使用exec执行相同的程序

时间:2016-03-21 13:15:23

标签: c exec

在我的C程序中,我想以递归方式调用程序的源代码,如下所示:

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Hello World\n");
    execlp("a.out", "a.out", NULL);
    return 0;
}

假设a.out是编译上述源代码的结果,使用

gcc program.c

我得到以下输出:

Hello World

好像我没有编写execlp行。 ¿这有什么不对吗?我想要实现的输出如下:

Hello World
Hello World
Hello World
Hello World
...

显然,在我的程序中它会停止,但为了简单起见,我现在不考虑它。

那么,怎么办呢? 谢谢。

2 个答案:

答案 0 :(得分:0)

要更正代码,请更改execlp命令。

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Hello World\n");
    execlp("./a.out", "", NULL);
    return 0;
}

然后使用./a.out将其运行到您的终端。

BTW你可以使用循环获得相同的输出:forwhile

答案 1 :(得分:0)

要生成这种输出,您应该使用循环而不是递归。如您所述,您需要添加停止条件...

#include <stdio.h>

int main() {
    while (true)  // To do: add a stop condition.
    {
        printf("Hello World\n");
    }
    return 0;
}