如何将参数传递给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 1I'm 8518: myvar is 2
I'm 8521: myvar is 3
如果不更改该值,则每个派生进程将具有相同的值。
以上是 如何将参数传递给fork()创建的进程 的全部内容, 来源链接: utcz.com/qa/424481.html