Unix-C-使用exec执行同一程序

Unix-C-使用exec执行同一程序,c,exec,C,Exec,在我的C程序中,我希望递归调用程序的源代码,如下所示: #include <stdio.h> #include <unistd.h> int main() { printf("Hello World\n"); execlp("a.out", "a.out", NULL); return 0; } 我得到以下输出: Hello World 好像我没有写execlp行。有什么问题吗?我想要实现的输出如下: Hello World Hello Wo

在我的C程序中,我希望递归调用程序的源代码,如下所示:

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

int main() {
    printf("Hello World\n");
    execlp("a.out", "a.out", NULL);
    return 0;
}
我得到以下输出:

Hello World
好像我没有写execlp行。有什么问题吗?我想要实现的输出如下:

Hello World
Hello World
Hello World
Hello World
...
显然,在我的程序中,这是一个停止条件,但为了简单起见,我现在不考虑它

那么,怎样才能做到呢?
谢谢。

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

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

int main() {
    printf("Hello World\n");
    execlp("./a.out", "", NULL);
    return 0;
}
#包括
#包括
int main(){
printf(“Hello World\n”);
execlp(“./a.out”,“NULL”);
返回0;
}
然后使用
/a.out
将其运行到终端中


顺便说一句,您可以使用循环获得相同的输出:
对于
,而

要生成这种输出,您应该使用循环而不是递归。正如您所提到的,您需要添加一个停止条件

#include <stdio.h>

int main() {
    while (true)  // To do: add a stop condition.
    {
        printf("Hello World\n");
    }
    return 0;
}
#包括
int main(){
while(true)//要执行的操作:添加停止条件。
{
printf(“Hello World\n”);
}
返回0;
}

您不使用
a.out
运行程序。您使用
/a.out
运行它,对吗?
#include <stdio.h>

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