我尝试按照与/usr/bin/open
这样的操作方式相同的方式启动流程:open -a /Applications/Firefox.app --args -profile "blah blah" -no-remote
。
正如我在这里从这个主题中学到的:launchd from terminal to start app。
然而,Linux并没有像我想象的那样拥有open
。我通过搜索验证了这一点。但在我的搜索中,我无法找到替代方案。如何启动流程,以便启动流程不会与已启动的流程共享其文件描述符,如本SO主题中所述:Close all File Handles when Calling posix_spawn
这是显示我的桌面文件的视频。我试图以某种方式启动它们,以便文件描述符不会在彼此之间混合,这是我的屏幕投射:https://www.youtube.com/watch?v=Yc19BzLTnDE
此视频显示PID正在混合:https://www.youtube.com/watch?v=YJsyV6tK7FA
答案 0 :(得分:2)
使用xgd-open。
xdg-open是一个独立于桌面的工具,用于配置用户的默认应用程序。
答案 1 :(得分:1)
只需运行二进制文件即可在Linux中启动X11应用程序,因此此用途不需要open
命令。 (open
的另一个用途是启动具有关联应用程序的文档,您可以使用特定于桌面管理器的命令或xdg-open
。)
为了避免共享文件描述符,您可以简单地从shell中关闭它们,例如,在bash /usr/bin/x11/firefox 3>&- 4>&- …
(最多9个)中,或者如果它只是标准的,那么也许你可以重定向它们:{ {1}}。或者您可能只想使用</dev/null >/dev/null 2>/dev/null
来避免在终端关闭时关闭nohup
上的程序。
答案 2 :(得分:1)
解决方案发现使用它使用的自定义图标启动.desktop文件。我无法让xdg-open
在i上工作,不知道为什么。
https://askubuntu.com/questions/591736/any-c-functions-to-simulate-double-click-on-file/592439