函数如何返回两个值

时间:2010-08-12 16:09:16

标签: linux fork

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

fork()函数通过复制当前的进程来启动新进程。如果它工作,fork()从父进程返回一个东西,从子进程返回另一个东西,以便剩下的代码知道哪个进程是“this”进程。

从某种意义上说,

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()将每个值返回两个不同的连续符。

答案 2 :(得分:1)

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

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