gpt4 book ai didi

`posix_spawn` 的能力

转载 作者:太空狗 更新时间:2023-10-29 12:11:34 31 4
gpt4 key购买 nike

我正在编写一个小程序,它有点像一个服务器,它产生它的客户端程序(在本地,而不是通过网络)并在它们之间做一些有趣的事情。虽然我使用的主要操作系统是 Linux,但我希望它能在包括 Windows 在内的其他操作系统上运行。有 forkexec 可以完成这项工作,但是当我通过 cygwin 将程序移植到 Windows 时,我不想要那个糟糕的 fork在 cygwin 中实现以启动,它实际上调用 CreateProcess 并使用共享内存使用 setjmp/longjmp 将当前进程的内存区域复制到新进程互斥量,所有这些都是为了用另一个程序 (exec) 替换。在阅读 cygwin 的常见问题解答页面时,我发现了 spawn.h 及其 posix_spawn,它们基​​本上看起来像 Windows 中的 CreatePorcess(Ex)。这似乎是一项新功能(...我的意思是不是原始 UNIX 系统功能之一),所以我对此有一些疑问。

  1. 它是否得到广泛实现? (我在网上看到一些帖子说他/她的系统下没有定义。)

  2. 在 Linux 中使用 posix_spawn 代替 fork/exec 是否可以提高或降低性能?

  3. 为什么 posix_spawnfork/exec 更不为人所知,也更少使用,尽管它自 1999 年以来一直是标准?

最佳答案

  1. Is it implemented well, widely? (I saw some posts on the internet that it is not defined under his/her system.)

高级实时 XSI 选项组是可选的,因此您可以符合 POSIX,但不实现它。但是对于 GNU/Linux,您现在可以指望它可用。

  1. Can I expect any performance improvement or deterioration by using posix_spawn instead of fork/exec in Linux?

可能是的,对于大流程quite some time可以花在复制页表上,只在 exec 时被丢弃。 posix_spawn 的实现,例如 musl 或 glibc 的使用 vfork(2) (或直接 clone(2))尽可能避免这种情况。对于像 cygwin 这样的系统,forkemulated成本相当高,posix_spawn 大大降低了开销。

  1. Why is posix_spawn less known and less used than fork/exec although being standard since 1999?

惯性,我猜。

关于 `posix_spawn` 的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42624073/

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