2015-03-02 112 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