小编典典

如何将参数传递给fork()创建的进程

linux

我想在C 中使用 fork() 创建流程的副本。我不知道如何将参数传递给流程的副本。例如,我想将整数传递给流程副本。

或者我该怎么办,如果我有一个循环,我在其中调用fork()并想将唯一的值传递给进程(例如0 … N)

for (int i = 0; i < 4; ++i) {
    fork();
    // pass a unique value to new processes.
}

阅读 779

收藏
2020-06-03

共1个答案

小编典典

有趣的fork()是,您产生的每个进程都会自动获取父进程拥有的所有内容的副本,因此,例如,我们想将int传递myvar给两个子进程中的每个,但我希望每个进程都具有与父进程不同的值处理:

int main()
{
    int myvar = 0;
    if(fork())
        myvar = 1;
    else if(fork())
        myvar = 2;
    else
        myvar = 3;

    printf("I'm %d: myvar is %d\n", getpid(), myvar);
    return 0;
}

因此,这样做可以使每个过程都有myvar其自身值的“副本” 。

I'm 8517: myvar is 1
I'm 8518: myvar is 2
I'm 8521: myvar is 3

如果不更改该值,则每个派生进程将具有相同的值。

2020-06-03