一个函数如何返回两个值

发布于 2024-09-13 17:49:05 字数 58 浏览 3 评论 0原文

我们知道 ac 函数永远不会返回多个值。那么 fork() 函数为什么会返回两个值呢?它是如何实施的?

We know that a c function never returns more than one value.Then how come the fork() function returns two values? How it is implemented?

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

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

发布评论

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

评论(3

分分钟 2024-09-20 17:49:05

fork() 作为一种函数,一次仅返回一个值 - 但是,它会创建正在运行的可执行文件的副本,并在每个副本中返回不同的值。

fork() as a function only returns one value at a time - however, it creates a copy of your running executable, and returns a different value in each copy.

爱给你人给你 2024-09-20 17:49:05

fork() 函数通过复制当前进程来启动一个新进程。如果有效,fork() 从父进程返回一件事,从子进程返回另一件事,以便其余代码知道哪个进程是“这个”进程。

从某种意义上说,fork() 确实返回两​​个值,但与您可能想到的含义不同。执行此类操作的另一个函数是 setjmp() (如果直接返回,则返回 0;如果我们通过 longjmp() 到达此处,则返回非零)代码>)。

对于您所讨论的意义上返回两个值的 C 函数,通常是这样完成的:

int return_2_values(int *other)
{
    *other = 2;
    return 1;
}

并像这样调用:

int b;
int a = return_2_values(&b);

/* a is now 1, and b is now 2 */

这里,return_2_values() 将两个返回值传递给同一个延续,而 fork()setjmp() 分别向两个不同的延续返回一个值。

The fork() function starts a new process by duplicating the current one. If it works, fork() returns one thing from the parent process and another thing from the child process so that the remaining code knows which process is "this" process.

fork(), in a sense, does return two values, but not in the same sense as you might be thinking. Another function that does this type of thing is setjmp() (which returns 0 if returning directly and non-zero if we got here via longjmp()).

For a C function to return two values in the sense you're talking about, it is often done like this:

int return_2_values(int *other)
{
    *other = 2;
    return 1;
}

and invoked like this:

int b;
int a = return_2_values(&b);

/* a is now 1, and b is now 2 */

Here, return_2_values() is passing both return values to the same continuation, whereas fork() and setjmp() return one value each to two different continuations.

小嗷兮 2024-09-20 17:49:05

fork() 仅返回一个值。它只是在不同的进程中返回不同的值。

此行为的实现由操作系统管理。

fork() only returns one value. It just returns different values different processes.

The implementation of this behavior is managed by the OS.

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