【问题标题】:Unix - C - Using exec to execute same programUnix - C - 使用 exec 执行相同的程序
【发布时间】:2016-03-21 13:15:23
【问题描述】:

在我的 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
...

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

那么,怎么做呢? 谢谢。

【问题讨论】:

  • 您没有使用a.out 运行程序。您使用./a.out 运行它,对吗?

标签: c exec


【解决方案1】:

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

#include <stdio.h>

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

【讨论】:

    【解决方案2】:

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

    #include <stdio.h>
    #include <unistd.h>
    
    int main() {
        printf("Hello World\n");
        execlp("./a.out", "", NULL);
        return 0;
    }
    

    然后在终端中使用./a.out 运行它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2016-05-31
      • 2012-12-26
      • 2020-07-18
      • 1970-01-01
      • 2015-06-24
      • 2015-09-19
      相关资源
      最近更新 更多