我使用 NSTask 来运行我的帮助应用程序。 99%的我的客户系统一切正常,但有两个回到我这让我知道它没有。其中一个很好,让我可以调查每个远程桌面的问题。
我为StandardOutput / StandardError尝试了很多不同的 NSPipe / NSFileHandle 组合,以确保问题与填充这些缓冲区无关。示例1和2。我的猜测是它没有相关性,因为它在很多系统上工作正常,并且_dyld_start在应用程序生命周期中为时尚早,以填满StandardOutput / StandardError。
关于这个问题的其他说明:
活动监视器中的过程示例的屏幕截图:
欢迎任何线索或调试技巧来确定帮助器卡在_dyld_start中的原因!
答案 0 :(得分:-1)
由于没有人回答,我提出了一些想法。也许其中一个就是答案 - 只是猜测 - 但是由于欢迎提供线索和提示,你可以看看:
如果我没记错的话,NSTask会调用posix_spawn(2)
。这可能是一个线索,因为使用fork(2)
和execv(3)
似乎有效,您可以专注于NSTask
和非阻塞替代方案之间的差异。很明显,一开始就会发生一些阻止孩子正常执行的事情。
sysdiagnose_timestamp_.tar.gz
的文件。请他们邮寄给你。我的大概是5 MB。有关sysdiagnose man page。