在我的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
...
显然,在我的程序中它会停止,但为了简单起见,我现在不考虑它。
那么,怎么办呢? 谢谢。
答案 0 :(得分:0)
要更正代码,请更改execlp
命令。
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Hello World\n");
execlp("./a.out", "", NULL);
return 0;
}
然后使用./a.out
将其运行到您的终端。
BTW你可以使用循环获得相同的输出:for
,while
。
答案 1 :(得分:0)
要生成这种输出,您应该使用循环而不是递归。如您所述,您需要添加停止条件...
#include <stdio.h>
int main() {
while (true) // To do: add a stop condition.
{
printf("Hello World\n");
}
return 0;
}