在带有 C++ 的目录中打开 HTML 文件



我想在 Ubuntu 中使用C++代码打开名为"myHTML.html"的 HTML 文件。该文件与我的C++源文件位于同一目录中。

我可以知道我该怎么做吗?

首先,您可以启动一个运行Web浏览器的进程(在后台),例如

 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(或其他一些不错的固定文件路径,没有顽皮的字符),您可以使用

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);
};

(您可能希望稍后为您的pid waitpid

更好的是,你可以让你的C++应用程序成为HTTP服务器,例如使用Wt或libonion。

最新更新