首页 > 解决方案 > 这是使用 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");
     }
}

标签: c

解决方案


推荐阅读