Posixy способ запустить браузер? - PullRequest
2 голосов
/ 23 декабря 2009

Есть ли способ «Posixy» открыть URL, желательно в браузере по умолчанию? Я хотел бы сделать что-то вроде

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 ]

3 голосов
/ 23 декабря 2009

В Linux вы должны попробовать запустить ваш URL с помощью команды xdg-open. Новые дистрибутивы должны запускать предпочтительный браузер пользователя при вызове этой команды. Он даже попытается запустить ссылки, если не работает GUI.

Очевидно, что в POSIX нет ничего относительно среды рабочего стола с графическим интерфейсом. Такие проекты, как freedesktop.org, существуют для выполнения этой роли. Он пытается определить некоторые базовые функции, которые будут работать на всех Unix-подобных рабочих столах, таких как GNOME и KDE.

Выполнение fork () и вызов system () вместо exec () - неопределенное поведение в POSIX, поэтому я не рекомендую этого.

2 голосов
/ 23 декабря 2009

Предпочтения браузера пользователя - это не то, что касается стандарта POSIX, о котором я знаю.

2 голосов
/ 23 декабря 2009

На Mac вы можете просто использовать команду open. open http://www.google.com из Терминала открывает для меня новую вкладку Chrome. Просто оберните это в system звонок.

1 голос
/ 23 декабря 2009

Нет портативного способа добиться этого. В Mac OS X решением было бы использовать LSOpenCFURLRef или другой API LaunchServices, чтобы открыть URL с обработчиком по умолчанию для схемы URL. Другие платформы будут действовать по-другому.

1 голос
/ 23 декабря 2009

Одним из способов может быть переменная $ BROWSER. Xorg предоставляет xrdb, что является предпочтительным способом для этой среды, но я полагаю, что это никуда не приведет вас в Mac OS X.

...