Я хочу открыть HTML файл с именем "myHTML.html", используя код C++ в Ubuntu. Файл находится в том же каталоге, что и исходные файлы C++.
Могу ли я узнать, как мне это сделать?
Во-первых, вы можете запустить процесс, выполняющий веб-браузер (в фоновом режиме), например
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);
Конечно, если текущая директория имеет странное имя (например, содержит цитату, что является необычным), вы можете получить некоторую инъекцию кода.Но это маловероятно.и вы можете заменить mypwd
на "/proc/self/cwd"
Если HTML файл, который вы хотите открыть, /etc/yourapp/myHTML.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