【问题标题】:Multiple Processes with vfork()使用 vfork() 的多个进程
【发布时间】:2017-06-16 19:35:46
【问题描述】:

我试图在运行 uClinux 的 SmartFusion2 SOM 上运行多个进程,但我只能在其上使用 vfork() 而不能使用 fork()。我一直在尝试运行以下代码来测试运行多个进程,但我没有得到我想要的结果。该代码应该同时运行两个不同的程序,但我遇到了 SEGV 错误。

代码如下:

#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(){
  pid_t pid;

  pid = vfork();
  if(pid > 0){
    printf("I am the parent of pid = %d\n", pid);
    execve("/home/path/to/executable2", NULL, NULL);
  }
  else if (!pid){
    printf("I am the baby\n");
    execve("/home/path/to/executable1", NULL, NULL);
  }
  else if (pid == -1){
    perror("fork");
  }
  return 0;
}

它编译得很好,但我的输出看起来像这样:

I am the baby
I am the parent of pid = 140
SEGV

谁能帮我看看我做错了什么?

【问题讨论】:

    标签: process exec vfork


    【解决方案1】:

    原来我的代码是正确的,但我使用的文件路径是我计算机上的根目录,而不是在 SmartFusion2 上运行时的目录。但是由于我没有在上面的代码中发布文件路径,它应该对任何人都有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-31
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多