c - C中的fork():从1数到1000
问题描述
我想我非常接近,但这里缺少一些细节。
任务:用 C 语言编写一个程序,创建父进程和子进程。父亲和孩子都在“使用”循环从 1 数到 1000。父进程只计算偶数,子进程只计算奇数。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
void main (){
int id = fork();
int i;
if (id == 0){
for (i=1;i<=1000;i=i+2){
printf("%d\n",i);
}
}
if (id > 0){
for (i=0;i<=1000;i=i+2){
printf("%d\n",i);
wait(0);
}
}
}
我在这里遇到的问题是,所有数字都完全混淆了。看来我的等待系统调用无法正常工作:(感谢任何帮助。提前致谢:)
解决方案
Your wait system call should placed out of for loop, because there's only one child process to wait.
like that
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
void main (){
int id = fork();
int i;
if (id == 0){
for (i=1;i<=1000;i=i+2){
printf("%d\n",i);
}
}
if (id > 0){
for (i=0;i<=1000;i=i+2){
printf("%d\n",i);
}
wait(0);
}
}
推荐阅读
- python - 合并返回 NaN 的日期列
- c# - 如何在 Unity 中创建每日奖励?
- android - 如何获取写入外部存储的运行时权限?
- r - 将 2 个具有不同 y 轴的点图组合在一起导致 x 轴重叠
- java - 动态创建自定义视图:Resources$NotFoundException
- php - 如何使用插入的数据库记录的自动增量 ID:Angular + Laravel
- swift - 未找到产品依赖项——仅在 Swift 4.2 之前
- c# - 使用 MWS API 获取 FBA Inventory Reconciliation 报告数据
- javascript - 以 % 为单位保持 div 的纵横比,知道以 px 为单位的高度和宽度
- ios - 检测tableview上的长按