我们可以使用 exec() 启动后台进程吗?作为一个论点?

发布于 2024-08-06 08:38:38 字数 26 浏览 4 评论 0原文

如果没有,我们如何在C中启动后台进程?

If not, how can we start a background process in C?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

执笏见 2024-08-13 08:38:38

在 Unix 中,exec() 只是故事的一部分。

exec() 用于在当前进程中启动一个新的二进制文件。这意味着当前进程中当前运行的二进制文件将不再运行。

因此,在调用 exec() 之前,您需要调用 fork() 创建一个新进程,以便当前的二进制文件可以继续运行。

通常,要让当前二进制文件等待新进程退出,您可以调用 wait*() 系列之一。该函数将使当前进程进入睡眠状态,直到您正在等待的进程完成。

因此,为了创建“后台”进程,您当前的进程应该跳过等待调用。

In Unix, exec() is only part of the story.

exec() is used to start a new binary within the current process. That means that the binary that is currently running in the current process will no longer be running.

So, before you call exec(), you want to call fork() to create a new process so your current binary can continue running.

Normally, to have the current binary wait for the new process to exit, you call one of the wait*() family. That function will put the current process to sleep until the process you are waiting is done.

So in order to create a "background" process, your current process should just skip the call to wait.

沉睡月亮 2024-08-13 08:38:38

使用 fork() 调用创建新进程,然后 exec() 将程序加载到该进程中。有关更多信息,请参阅手册页(man 2 forkman 2 exec)。

Use the fork() call to create a new process, then exec() to load a program into that process. See the man pages (man 2 fork, man 2 exec) for more information, too.

一场信仰旅途 2024-08-13 08:38:38

Fork返回子进程的PID,所以常见的习惯用法是:

if(fork() == 0)
    // I'm the child
    exec(...)

Fork returns the PID of the child, so the common idiom is:

if(fork() == 0)
    // I'm the child
    exec(...)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文