2015-03-02 110 views
2

我试图启动一个与我在OS X中使用/usr/bin/open类似的方式启动进程:open -a /Applications/Firefox.app --args -profile "blah blah" -no-remoteLinux等效于OS X的/ usr/bin/open

正如我在这里从这个主题了解到的:launchd from terminal to start app

但是Linux没有这个open,就像我认为的那样。我通过搜索验证了这一点。但在我的搜索中,我找不到替代品。如何启动进程以便启动进程不会与启动的进程共享其文件描述符,如本主题中所述:Close all File Handles when Calling posix_spawn

这是显示我的桌面文件的视频。我试图启动它们以某种方式使该文件描述符不相互之间在这里混是我的屏幕转换:https://www.youtube.com/watch?v=Yc19BzLTnDE

该视频显示PID被混合:https://www.youtube.com/watch?v=YJsyV6tK7FA

+0

这里有两个完全独立的问题。你想解决哪个问题? – 2015-03-02 05:51:36

+1

@Ignacio Vazquez-Abrams:都! ;) – user2588666 2015-03-02 05:53:56

+0

非常感谢@ user2588666! :) – Noitidart 2015-03-02 05:56:54

回答

2

使用xgd-open

xdg-open是一个桌面独立工具,用于配置用户的默认应用程序。

+0

除了不关闭开放描述符。 – 2015-03-02 05:55:07

+0

嗨Shx2你能告诉我如何使用它来启动Firefox的一些命令行参数:'/ usr/lib/firefox/firefox -no-remote -P dev'非常感谢您的快速回答! – Noitidart 2015-03-02 08:30:10

+0

嗨shx2我发布了一个C底部使用Gio的解决方案,我无法找到xdg-open可以请你分享:) – Noitidart 2015-03-03 22:51:04

1

只需运行二进制文件即可在Linux中启动X11应用程序,因此open命令对于此用途而言是不必要的。 (中open另一个用途是与相关的应用程序,以便您可以使用桌面管理器专用命令或xdg-open启动文件。)

为了避免共享文件描述符,你可以简单地从外壳关闭它们,例如,在bash /usr/bin/x11/firefox 3>&- 4>&- …(最多9个)或者它只是标准的那个,那么也许你可以重定向他们:</dev/null >/dev/null 2>/dev/null。或者,您可能只想使用nohup来避免在终端关闭时关闭SIGHUP上的程序。

+0

我试图并行运行firefox。我可以通过在这里附加'-no-remote -P“配置文件名称的命令行参数来实现,如果我关闭文件描述符,那么会关闭第一个实例no? – Noitidart 2015-03-02 06:01:45