#include
#include
#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;
}
等待一个随机的时间(在1到10秒之间),然后打印一行并退出(在使用rand()时要小心--如果你没有给你的随机数发生器播种一个快速变化的值你所有的随机数可能会从同一个种子开始)。
代码如下,还望采纳:
#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