【问题标题】:Is there a way to run GUI application in a headless way in Mac?有没有办法在 Mac 中以无头方式运行 GUI 应用程序?
【发布时间】:2012-01-25 12:49:45
【问题描述】:

我正在使用以下技术在 Linux 和 Windows 中运行 GUI 应用程序:

Linux:

:~$ Xvfb :99 -ac &
:~$ DISPLAY=:99 ./app

这在 Mac OS X 中不会 100% 工作,即使默认安装了 Xvfb,因为大多数应用程序在 Aqua 环境中运行,并且简单地忽略 DISPLAY 变量设置。

Windows(程序化方式):

HDESK hDesk=CreateDesktop(TEXT("Virtual"),NULL,NULL,NULL,GENERIC_ALL,NULL);
if(hDesk!=NULL) {
   // create process in this desktop
   CloseDesktop(hDesk);
}

Mac OS X:

我如何在 Mac OS X 中做同样的事情(从命令行或以编程方式)? 谢谢!

【问题讨论】:

  • (不是答案,因此是评论,但是......)我知道过去人们通过焊接二极管( ?) 到每台 Mac 上,让它相信连接了一个显示器,这样 OS X 就认为它不是真正的“无头”。我不确定这是否是过去最好的解决方案,但这肯定已经在野外看到过,并且是我见过的最疯狂的黑客攻击之一。
  • 你可以看看DVI Detective
  • 您找到解决方案了吗?很高兴发现默认安装了 Xvfb,但它似乎没什么用。
  • 如果您要运行的是 firefox,看起来 firefox-x11 可能是您问题的答案? (根据您在下面的评论)

标签: java c++ macos x11 xvfb


【解决方案1】:

这是一个 Java 问题吗?我既不认识 HDESK 也不认识 CreateDesktop 调用,但在 JVM 本身中,您可以通过定义无头系统属性调用 java 来在任何地方运行无头...

java -Djava.awt.headless=true

我至少在 Windows 和 Linux 上已经成功了。我希望它以同样的方式在 OS X 上工作。文章解释的很好:http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/

【讨论】:

  • 不,这不是Java程序,可以是任何应用程序,例如:Firefox浏览器应用程序。
【解决方案2】:

我也有同样的问题,目前找到了两篇或多或少相关的文章:

https://spideroak.com/faq/questions/72/how_can_i_run_spideroak_without_the_gui_from_launchd/

http://lists.squeakfoundation.org/pipermail/seaside/2009-August/021270.html

基本上他们的建议是使用

--headless  

-vm-display-null 

选项

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多