我想在C 中使用 fork() 创建流程的副本。我不知道如何将参数传递给流程的副本。例如,我想将整数传递给流程副本。
或者我该怎么办,如果我有一个循环,我在其中调用fork()并想将唯一的值传递给进程(例如0 … N)
for (int i = 0; i < 4; ++i) { fork(); // pass a unique value to new processes. }
有趣的fork()是,您产生的每个进程都会自动获取父进程拥有的所有内容的副本,因此,例如,我们想将int传递myvar给两个子进程中的每个,但我希望每个进程都具有与父进程不同的值处理:
fork()
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
如果不更改该值,则每个派生进程将具有相同的值。