gpt4 book ai didi

c - 如何使用 fork() 和 exec() 在 Mac OS 上创建进程

转载 作者:太空狗 更新时间:2023-10-29 16:52:24 26 4
gpt4 key购买 nike

我正在开发一个相对简单、独立的“process starter”,我想在 Windows(XP、Vista、7)、Linux(Ubuntu 10.10)上工作,尤其是 Mac OS X (10.6)。 Linux 和 Windows 基本上都可以,但我在使用 Mac 版本时遇到了一些问题。我希望 fork()exec() 函数在 Mac OS 下的工作方式与它们在 Linux 中的工作方式相同。所以我的第一个问题是:

  1. 我应该使用这些来创建一个Mac 上的进程或者有没有平台特定功能用过?

我当前用于调试的代码(在 Linux 下运行良好)看起来像这样:

pid_t processId = 0;
if (processId = fork()) == 0)
{
const char * tmpApplication = "/Path/to/TestApplication";

int argc = 1;
char * argv[argc + 1];

argv[0] = tmpApplication;
argv[1] = NULL;

execv(tmpApplication, argv);
}else
{
//[...]
}

不知道这是否也可以在 Mac OS X 下工作,因为我的子进程根本没有启动,但不会出现任何错误。

谢谢!

最佳答案

以下程序改编自您的代码,在 OS X 下对我来说工作得很好:

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

int main (void) {
pid_t processId;
if ((processId = fork()) == 0) {
char app[] = "/bin/echo";
char * const argv[] = { app, "success", NULL };
if (execv(app, argv) < 0) {
perror("execv error");
}
} else if (processId < 0) {
perror("fork error");
} else {
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}

我建议您从这个简单的片段开始,如果它有效,请继续添加内容,直到您找到导致它崩溃的原因。

关于c - 如何使用 fork() 和 exec() 在 Mac OS 上创建进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com