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

标签 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");
    }

最佳答案

首先阅读这些调用的手册页:

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

关于c - 我如何使用 fork 打开一个新进程并使用 execl 在 c 中启动网络浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765252/

相关文章:

c - 在 C 中的第五个字符后插入连字符

c - 如何在c中使用execl命令创建文件

objective-c - 在 Objective-C 中,是否有一种优雅的方法可以在对象的生命周期内执行一次代码?

C fork程序解释

c - 使用 C 中的进程的共享内存问题

c - 在 Linux/Unix 中用 C 语言管理进程 fork

c - open() 第一次尝试失败

c - 使用 grep 和 execl ,它会启动无限循环?

c - 将多个字符串分别放入一个数组中

c - 将在短路评估中首先执行 (a&&b)