#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define LEFT 3000000
#define RIGHT 3000200
int main(int argc, char const *argv[]){
int i,j, mark;
pid_t pid;
for (i = LEFT; i < RIGHT; ++i){
pid = fork(); //创建子进程
if (pid < 0){ //判断子进程是否fork成功
perror("fork()");
exit(1);
}
if (pid == 0) { //以下部分子进程处理
mark = 1;
for (j = 2; j < i/2; ++j){ //判断是否是质数
if (i % j == 0){
mark = 0;
break;
}
}
if (mark){ //mark如果不是0,则打印该数
printf("i am %d, i handle this number: %d\n", getpid(),i);
}
exit(0); //子进程退出
}
}
exit(0); //主进程退出
}
03-16