2008-10-01 4 views
4

사용자가 선택하면 "현재"브라우저에서 웹 페이지를 시작하는 응용 프로그램이 있습니다. 이 응용 프로그램의 일부는 Windows 버전에서 잘 작동하지만 Linux 빌드에서이 작업을 수행하는 방법을 알 수 없습니다.Linux에서 내 응용 프로그램의 웹 페이지를 실행하십시오.

지금 리눅스 버전은 특정 디렉토리에 Firefox 용으로 하드 코드되어 있으며 매번 새로운 인스턴스가 실행되며 내가 전달하는 URL은 표시되지 않습니다. 매번 새로운 버전을 시작하지 마십시오. 이미 실행중인 경우 현재 열려있는 페이지에서 새 페이지를 열면됩니다. 창에 대한

내가 사용 :

ShellExecute(NULL,"open",filename,NULL,NULL,SW_SHOWNORMAL); 

리눅스를 들어 내가 현재 사용

pid_t pid; 
char *args[2]; 

char *prog=0; 
char firefox[]={"/usr/bin/firefox"}; 

if(strstri(filename,".html")) 
    prog=firefox; 

if(prog) 
{ 
    args[0]=(char *)filename; 
    args[1]=0; 
    pid=fork(); 
    if(!pid) 
     execvp(prog,args); 

} 

답변

6

당신이 현대 배포판이를 작성하는 경우 xdg-open 사용할 수 있습니다

$ xdg-open http://google.com/ 

이전 버전을 사용하는 경우와 같은 데스크톱 관련 명령을 사용해야합니다.또는 exo-open.

+0

그래서 "/ usr/bin/firefox"에서 "xdg-open"으로 프로그램 이름을 변경하겠습니까? – KPexEA

+0

/usr/bin/xdg-open으로 변경하십시오. –

2

XDG 오픈에서

firefox -remote 'openurl(http://stackoverflow.com)' 

괜찮다 자세한 사용법은 새로운 표준이며, 가능하면 당신은 그것을 사용해야합니다. 그러나 배포판이 몇 년 이상 지난 경우에는 존재하지 않을 수도 있으며 대체 메커니즘으로는 $ BROWSER (이전 시도한 표준), gnome-open (Gnome), kfmclient exec (KDE), exo-open (Xfce) 또는 mailcap을 직접 파싱해야합니다 (text/html 핸들러는 브라우저가 될 가능성이 큽니다).

대부분의 응용 프로그램은 그다지 많은 노력을 기울이지 않습니다. 특정 환경 용으로 빌드 된 경우 해당 환경의 실행 메커니즘을 사용합니다. 예를 들어 Gnome은 GNOME _ url _ show, KDE는 KRun, 대부분의 터미널 프로그램 (예 : mutt)은 mailcap 등을 구문 분석합니다. 브라우저를 하드 코딩하고 배포자 또는 사용자가 기본값을 대체하도록 허용하는 것도 일반적입니다.

하드 코딩을 권장하지 않지만 실제로 Firefox에서 새 탭을 열려면 "firefox -new-tab $ URL"을 사용할 수 있습니다.

1

xdg-open 참고 : http://portland.freedesktop.org/wiki/, "Using Xdg-utils"; 그것은 자신의 응용 프로그램에 xdg-open 스크립트를 포함시킬 수 있으며 대상 시스템에 xdg-open이 이미 설치되어 있지 않은 경우 폴백으로 사용할 수 있다고 나와 있습니다.

관련 문제