使用C ++在目录中打开HTML文件

时间:2014-02-15 15:12:47

标签: c++ html linux ubuntu

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

我可以知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先,您可以启动运行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);

当然,如果当前目录有一个奇怪的名称(例如包含一个不常见的引用),你最终可能会得到一些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服务器,例如使用Wtlibonion