【问题标题】:Linux equivalent of OS X's /usr/bin/openLinux 相当于 OS X 的 /usr/bin/open
【发布时间】:2015-03-02 05:50:37
【问题描述】:

我正在尝试以与在 OS X 中使用/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

【问题讨论】:

  • 这里有两个完全独立的问题。你想解决哪个?
  • @Ignacio Vazquez-Abrams:两者都有! ;)
  • 非常感谢@user2588666! :)
  • 请原谅@IgnacioVazquez-Abrams 我认为这是一种情况。理想情况下,我正在寻找最好的跨 linux 解决方案来启动另一个进程以防止文件描述符被复制。
  • 天哪,你写了一个扩展来从 Firefox 内部运行 Firefox...

标签: linux macos shell


【解决方案1】:

使用xgd-open

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

【讨论】:

  • 除非它不关闭打开的描述符。
  • 嗨 Shx2,你能告诉我如何使用它来启动带有一些命令行参数的 Firefox:/usr/lib/firefox/firefox -no-remote -P dev 非常感谢你的快速回答!
  • 嗨,shx2,我在底部发布了一个使用 Gio 的 c 解决方案,我无法输出 xdg-open,你能分享一下吗:)
【解决方案2】:

您只需运行二进制文件即可在 Linux 中启动 X11 应用程序,因此此用途不需要 open 命令。 (open 的另一个用途是使用关联的应用程序启动文档,您可以使用桌面管理器特定的命令或xdg-open。)

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

【讨论】:

  • 我正在尝试并行运行 Firefox。我可以通过附加-no-remote -P "profile name here" 的命令行参数来做到这一点,如果我关闭文件描述符,那么这将关闭第一个实例吗?
【解决方案3】:

解决方案发现使用它使用的自定义图标启动 .desktop 文件。我无法让xdg-open 处理我,不知道为什么。

https://askubuntu.com/questions/591736/any-c-functions-to-simulate-double-click-on-file/592439

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2014-01-06
    • 2015-02-03
    • 2016-01-22
    • 1970-01-01
    • 2011-07-18
    • 2014-01-04
    • 1970-01-01
    相关资源
    最近更新 更多