c - 这是使用 sleep() 的缺点还是每次迭代输出计数的问题?(子进程没有按预期执行)
问题描述
只是一个真正的快速问题。有人可以确认或纠正我的理论,即为什么我的子进程没有像我想象的那样执行吗?鉴于我所拥有的,我希望孩子在父母睡 10 秒时达到 999,因此这将导致 iter 的总增量为 1000。但是,它的输出仅达到 860 左右。我的假设是它必须在每 1/100 秒睡眠之间输出计数,但我不相信。我还考虑了我在 usleep 上找到的手册文档,该文档说该功能保证至少有那么长的延迟。是这两者之一还是两者兼而有之?
int main() {
int iter=0, forkedProcess;
forkedProcess = fork();
if (forkedProcess == 0) {
while (1) {
iter++;
printf("Count for process: child is %d\n", iter);
/* sleep for 1/100 of a second */
usleep(10000);
}
}
else {
printf("Process sleeping for 10 seconds: Parent\n");
sleep(10);
kill(forkedProcess, SIGTERM);
printf("Process killed: child. Waiting for it...\n");
wait(NULL);
print("Everything has finished");
}
}
解决方案
推荐阅读
- python-3.x - 解决预算规划师的问题(学校项目)
- java - 字段注入与构造函数注入 - 它对我编写单元测试的方式有何影响?
- nginx - 启用“httpd_can_network_connect”后,将其用作 Grafana 的反向代理时发生 Nginx Bad Gatway 错误
- reactjs - 使用带有动态数据的网格
- amazon-web-services - 无法删除的 EC2 经典资源 - 现在怎么办?
- javascript - 属性分配的Javascript不起作用
- typescript - node_module 中的类型文件夹
- c - 标识符未定义(在 C 中)
- javascript - 从 ref 节点获取数据(JavaScript 网页抓取)
- javascript - Django-React 上传图片问题