gpt4 book ai didi

macos - 从另一个进程启动应用程序

转载 作者:行者123 更新时间:2023-12-02 04:02:24 29 4
gpt4 key购买 nike

我们有一个以捆绑包形式构建的应用程序,我们希望从另一个进程启动它。

我们应该怎么做?
据我了解,我们可以使用 openUrls()、openFile() 或 execve()
但我不知道哪一个更适合我们。

谢谢

最佳答案

由于您在谈论应用程序,因此您不想通过文件关联机制。它们用于使用适当的应用程序打开文档、图像等。由于您似乎不确定要问什么,我想说保持简单:
exec* family 直接启动一个可执行文件。但请注意,它用已启动的应用程序替换了启动过程。您的启动器将在此时停止执行。如果您希望启动器继续运行,您需要使用启动子进程的东西。低级方式是fork/vfork后跟 exec ,但使用 system 启动应用程序要简单得多,它负责幕后的所有事情。 (假设世界另一端的用户注入(inject)执行路径没有安全问题)。

如果启动器在启动您的应用程序后没有立即终止,您需要考虑它是否“阻塞”直到启动的应用程序终止,或者它是否异步启动应用程序 - 以便它们随后并行运行。启动器也可能“等待”应用程序的返回值,以检查它是否成功,然后可能会做一些事情。有很多方法可以做到这一点,但是由于我们不知道您需要什么,所以我不会详细说明。

简而言之:如果您的启动器的唯一工作是启动您的应用程序,请使用 execl .如果您的启动器需要执行更多操作,请使用 system .如果两者都不完全符合您的需求,您需要提供更多信息——从编写启动器的语言开始。

PS。两者都具有通用性和可移植性的优点。它们适用于 GUI 和命令行应用程序,它们适用于任何类 Unix 系统,在某种程度上适用于 Windows。没有必要为了这么简单的事情把自己锁在 Cocoa 中。

关于macos - 从另一个进程启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708600/

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