我如何使用fork打开一个新进程并使用execl在c中启动Web浏览器

时间:2014-03-31 15:08:58

标签: c fork os.execl

我想使用fork创建一个新进程,然后使用excl启动带有url的Web浏览器。 我不太熟悉fork和excel所以任何帮助将不胜感激。 感谢

编辑: 这是我的代码,但我不认为它是正确的

if(fork() == 0) {
      execl (url,0);
      printf("Route opened in brwoser\n");
    } else {
      printf("Route cannot be opened.\n");
    }

1 个答案:

答案 0 :(得分:0)

首先阅读这些电话的手册页:

man 2 fork
man 3 execl

系统调用fork()创建进程的副本并在两者中返回,返回父进程中的子进程ID和子进程中的零。如果它返回一个负数,则表示它失败了。

pid_t pid = fork();
if (pid < 0)
    printf("Fork failed\n");
else if (pid > 0) /* Here comes the parent process */
    printf("Fork successful\n");
else /* Here comes the child process */
    ...

另一方面,execl()根本没有返回。它会抛弃您的程序,并将其替换为同一进程中其参数中指定的图像。

如果execl()返回,则表示错误。它可能找不到您指定的程序。

它的参数是被调用程序(URL不是程序)及其参数。

...
else { /* Here comes the child process */
    execl("/usr/bin/firefox", "/usr/bin/firefox", "example.com", (char*)NULL);
    printf("Could not execute Firefox\n");
}