0
我現在有寫這創造儘可能多的派生進程作爲用戶想要的東西,然後等待它們全部完成,讓他們返回1和6爲什麼我的分支進程沒有返回我想要返回的值?
之間的隨機數這是到目前爲止我的代碼的程序:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(){
int n,i;
int *returnvalue, value;
int pid;
int waitingID;
returnvalue = &value;
printf("How many processes to start?\n");
scanf("%d",&n);
for(i=0; i < n; i++){
pid = fork();
if(pid==0){
printf("I am %d, from iteration %d\n",getpid(), i);
}
else if(pid > 0){
waitingID = waitpid(pid, returnvalue, 0);
printf("Return-value of %d is: %d\n", waitingID, *returnvalue);
break;
}
else{
printf("A problem occured.");
}
}
srand(time(NULL));
exit((rand()%6)+1);
return 0;
}
它實際上主要工作,到目前爲止,但我從來沒有得到一個數字1和6之間,而像一些值768,512,256等。
感覺就像隨機線路被忽略。
如何修復我的代碼以返回適當的隨機值?
返回給父級的實際退出狀態是一個8位數字。根據您選擇顯示評估者的方式 - 它不能大於uint8_t - > 255的最大值。 –