gpt4 book ai didi

iphone - iPhone 上的 Fork()

转载 作者:行者123 更新时间:2023-12-03 19:31:35 25 4
gpt4 key购买 nike

iPhone SDK 是否允许传统的 UNIX 函数 fork()pipe() ?我似乎无法让它们工作。

编辑

问题已解决。在这里,我为遇到与我类似问题的任何人提供解决方案。我受到了这个帖子中的答案的启发。

在 iPhone 中,无法 fork 进程。然而,实现管道并非不可能。在我的项目中,我创建了一个新的 POSIX 线程(请阅读 Apple 的文档以了解如何执行此操作)。子线程将与父线程共享由 pipeline() 创建的文件描述符。子线程和父线程可以通过管道进行通信。例如,我的子线程 dup2() fd[1] 到其标准输出。因此任何标准输出都可以在父线程中捕获。类似于fd[0]和标准输入。

伪代码(我没有可用的代码,但你明白了):

int fd[2];
pipe(fd);
create_posix_thread(&myThread, fd);
char buffer[1024];
read(fd[0], buffer, 1024);
printf("%s", buffer); // == "Hello World"

void myThread(int fd[])
{
dup2(fd[1], STANDARD_OUTPUT);
printf("Hello World");
}

如果您想在 iPhone 应用程序中使用第三方库,该策略非常方便。然而,问题是使用 printf() 的标准调试不再可用。在我的项目中,我只是将所有调试输出定向到标准错误,XCode 会将输出显示到其控制台。

最佳答案

你不能 fork(),但你可以使用任意数量的线程,现在 iPhone 上甚至有 GCD 来帮助保持线程的合理使用。

为什么要使用 fork() 而不是仅仅使用更多线程?

关于iphone - iPhone 上的 Fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619252/

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