disaste0_0 2023-02-01 09:51 采纳率: 81.6%
浏览 39
已结题

关于c语言的线程和进程

要求写个进程我是不是差很多代码呀
#include <stdio.h>
#include <time.h>

#define seconds 10
//Lux Ren
//assignment 2

int main() {
    srand(time(NULL));
    for (int i = 0; i <= seconds; i++)
    {
        int  r = rand() % 10;
        printf("process %d is done after sleeping for %d seconds", r, i);
        printf("\n");
    }
    return 0;

}

用C语言编写一个程序,从命令行中获取一个数字,并创建与命令行中指定数量相同的新进程。每个进程应该

等待一个随机的时间(在1到10秒之间),然后打印一行并退出(在使用rand()时要小心--如果你没有给你的随机数发生器播种一个快速变化的值你所有的随机数可能会从同一个种子开始)。

img

  • 写回答

2条回答 默认 最新

  • CodeBytes 2023-02-01 10:31
    关注

    代码如下,还望采纳:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <time.h>
    #include <sys/wait.h>
    
    int main(int argc, char *argv[]) {
        // 获取数字
        int num;
        sscanf(argv[1], "%d", &num);
        
        // 初始化随机数生成器
        srand(time(NULL));
        
        for (int i = 0; i < num; i++) {
            // 创建新进程
            pid_t pid = fork();
            if (pid == 0) {
                // 子进程等待随机时间
                int sleepTime = rand() % 10 + 1;
                sleep(sleepTime);
                
                // 打印并退出
                printf("Child process %d exited after waiting %d seconds\n", i + 1, sleepTime);
                exit(0);
            }
        }
        
        // 等待所有子进程退出
        int status;
        for (int i = 0; i < num; i++) {
            wait(&status);
        }
        
        return 0;
    }
    
    
    

    请注意,在运行程序时需要从命令行中指定数字,例如:
    ./program 5

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 2月1日