【问题标题】:Running a separate process within a parent process在父进程中运行单独的进程
【发布时间】:2015-05-20 14:34:21
【问题描述】:

我正在创建一个父进程,它使用 fork() 创建一个子进程,然后创建一个父进程和子进程都可以访问的共享内存块。我已经使用 WIN32 api 创建了子进程(通过创建几个 .exe 文件并运行它们,然后使用 createProcess() 函数调用它们),但我有点不确定 linux 的步骤。

我创建了一个单独的 C 文件,其中包含孩子的代码。我假设我将使用 fork 创建子进程,然后在子进程(pid == 0)中使用 exec() 命令调用另一个 C 文件?我需要先运行另一个文件吗?或者它可以只是坐在同一个目录中?

感谢任何帮助

谢谢

【问题讨论】:

  • 这是一个相当基本的问题。您是否尝试过搜索答案或示例(“linux fork 示例”)?我相信你会发现它们很丰富。但是要回答您的具体问题:不,您不会在分叉后再次调用 exec 。 fork 已经创建了新进程。因此,在 (pid==0) 的情况下,您只需包含您希望孩子运行的任何代码。如果它在不同的文件中,那么只需调用实现子行为的函数。

标签: c linux exec fork


【解决方案1】:

在fork()之后,有两个进程,父进程和子进程。父进程中的fork系统调用返回子进程的进程id。在子进程中,fork()返回0。所以,如果fork()的返回值为0,就可以为子进程调用带有程序可执行文件名的exec系统调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多