Posixy推出浏览器的方式?

时间:2009-12-23 00:50:16

标签: c++ linux macos browser portability

是否有'Posixy'方式打开网址,最好是在默认浏览器中?我想做点什么

ShellExecute(0, _T("open"), url, 0, 0, SW_SHOWDEFAULT);

适用于GNU / Linux和MAC。我读了一些答案说'`

if (fork() == 0)
    system("sensible-browser http://wherever.com");

至少在Debian系统上做的伎俩。有没有一种简单的方法可以将其扩展到适用于其他发行版 Mac OS X的内容?

5 个答案:

答案 0 :(得分:3)

在Linux上,您应该尝试使用xdg-open命令启动URL。当调用该命令时,较新的发行版应该启动用户首选的浏览器。如果没有GUI运行,它甚至会尝试启动链接。

显然,POSIX中没有关于GUI桌面环境的内容。像freedesktop.org这样的项目可以填补这个角色。它试图定义一些基本功能,这些功能将适用于所有类Unix桌面,例如GNOME和KDE。

执行fork()并调用system()而不是exec()是POSIX上未定义的行为,因此我不建议这样做。

答案 1 :(得分:2)

用户的浏览器偏好并不是我所知道的POSIX标准所关注的东西。

答案 2 :(得分:2)

在Mac上,您只需使用open命令即可​​。来自终端的open http://www.google.com会为我打开一个新的Chrome标签。只需将其包裹在system电话中。

答案 3 :(得分:1)

一种方式可能是$ BROWSER变量。 Xorg提供了xrdb,这是这种环境的首选方式,但我认为这不会让你在Mac OS X上的任何地方。

答案 4 :(得分:1)

没有可移植的方法来实现这一目标。在Mac OS X上,解决方案是使用LSOpenCFURLRef或其他LaunchServices API使用URL方案的默认处理程序打开URL。其他平台将以不同的方式做事。