gpt4 book ai didi

c - 生成任意数量的子进程?

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:43 24 4
gpt4 key购买 nike

我需要一些有关 C 语言编程的帮助,我有一个问题要我创建任意数量的子进程,每个子进程执行一个子进程函数。子进程的数量应该作为命令行参数提供,在子进程函数中,它应该通过一个简单的循环运行随机次数的迭代,然后打印“Child X”,其中 X 作为参数提供。如果有人可以帮助指导我完成这件事,那就太棒了!

我试过了,但我不明白进程在 C 中是如何工作的。

修改后的代码

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main(int argc, char **argv) {

int counter;
pid_t pid = getpid();
int x = atoi(argv[1]); // Changed (added)

printf("Parent Process, my PID is %d\n", pid);

for(counter=1;counter <= x;counter++){ // Changed
if(!fork()){
printf("Child %d is born, my PID is %d\n", counter, getpid()); // Changed
childprocess(counter);
printf("Child %d dies\n", counter);
exit(0);
}
}
}

void childprocess(int num){
int i = 1;

while(i <= num){
printf("Child %d executes iteration: %d\n", num, i); // Changed
i++;
}

}

原始代码

    #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main(int argc, char **argv) {

int counter;
pid_t pid = getpid();

printf("Parent Process, my PID is %d\n", pid);

for(counter=1;counter <= argv[1];counter++){
if(!fork()){
printf("Child %d is born, my PID is %d\n", counter, pid);
childprocess(counter);
printf("Child %d dies\n", counter);
exit(0);
}
}
}

void childprocess(int num){
int i = 1;

while(i <= num){
printf("Child %d executes iteration: %d\n", i);
i++;
}

}

最佳答案

pid 值始终是父进程的值。它会 fork ,但打印出相同的数字。尝试:

printf("Child %d is born, my PID is %d\n", counter, getpid());

在 fork 后得到 child 的PID。printf("Child %d executes iteration: %d\n", i); 位有 2%,但只有一个值。尝试

printf("Child %d executes iteration: %d\n", num, i);

关于c - 生成任意数量的子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com