musl团队声称不需要检测musl libc,因为他们只实现标准功能而没有需要检测的怪异行为。直到今天,这种说法可能是真的,但现在不再是真的了。正常的功能检测已经无效,因为该功能是存在的,但是已经损坏了。我不想在编译时要求root并且禁止交叉编译,也不想探测它。这个错误已经被报告,并提供了最小化的样本代码,而维护者们不想修复它,也不会采纳我的补丁。我不打算因为musl有一个损坏的功能而惩罚每一个其他的libc。
从逻辑上讲,我想要做的是:
从逻辑上讲,我想要做的是:
#if MUSL || APPLE
pid = fork();
#else
pid = vfork();
#endif
我已经有了#if APPLE
,因为Mac OSX有一个不可信的vfork()
。
告诉我vfork()
不好没有任何意义。自2008年以来,情况已经改变,无论涉及到多少复杂性,vfork()
都是更好的选择。一些来源:https://gist.github.com/nicowilliams/a8a07b0fc75df05f684c23c18d7db234
vfork()
做什么?请记住,它已被 POSIX.1-2008 规范宣布为过时的,并且即使在此之前也受到广泛限制。 - user149341vfork()
正在大放异彩。 - Joshua