2014-02-15 6 views
0

Я хочу открыть файл HTML с именем «myHTML.html», используя код C++ в Ubuntu. Файл находится в том же каталоге, что и исходные файлы на C++.Открыть HTML-файл в каталоге с C++

Могу ли я узнать, как это сделать?

+1

Что вы подразумеваете под «открытием»? Прочтите? Напиши это? Извините? – gongzhitaao

+0

@gongzhitaao привет! Я хочу открыть его. Например. когда я запускаю определенный метод, мой HTML-файл будет запущен в mozilla или chrome. : D –

+0

Могу ли [этот пост] (https://stackoverflow.com/questions/6143100/how-do-i-open-a-file-in-its-default-program-linux) оказать некоторую помощь? – gongzhitaao

ответ

1

Во-первых, вы можете запустить процесс, выполняющий веб-браузер (в фоновом режиме), например.

char cmd[256]; 
char mypwd[200]; 
memset (mypwd, 0, sizeof(mypwd)); 
if (!getcwd(mypwd, sizeof(mypwd))) 
    { perror("getcwd"); exit (EXIT_FAILURE); }; 
snprintf (cmd, sizeof(cmd), 
      "/usr/bin/x-www-browser 'file://%s/myHTML.html' &", mypwd); 
int notok = system(cmd); 

Конечно, если текущий каталог имеет странное имя (например, содержит цитату, которая редко встречается), то в конечном итоге с некоторыми code injection. Но это маловероятно. и вы можете заменить mypwd на "/proc/self/cwd"

Если HTML-файл, который вы хотите открыть, встроен, например. /etc/yourapp/myHTML.html (или какой-либо другой хороший фиксированный путь к файлу, без озорных символов) вы могли бы просто использовать

int notok = system("/usr/bin/x-www-browser /etc/yourapp/myHTML.html &"); 

или

int notok = system("xdg-open /etc/yourapp/myHTML.html &"); 

или

pid_t pid = fork(); 
if (pid == 0) { 
    // child process 
    execlp("xdg-open", "/etc/yourapp/myHTML.html", NULL); 
    _exit(127); 
}; 

(вы можете waitpid для ваш pid)

И даже лучше, вы могли бы сделать свое приложение на C++ сервером HTTP, например. с Wt или libonion

+0

Заранее спасибо. Я попробую! :) –

Смежные вопросы