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

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

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

for (int i = 0; i < 4; ++i) {

fork();

// pass a unique value to new processes.

}

回答:

有趣的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

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

以上是 如何将参数传递给fork()创建的进程 的全部内容, 来源链接: utcz.com/qa/424481.html

回到顶部