請問一題c的fork在unix上執行
請教一下,我們的os要寫一題程式,但我們不常在用c的行程,所以一頭務水,我們大致上是寫說,要由二個行程,一個會做生產者執行Producer而另一個行程執行Customer的函數,但是我執行不出來,函數那些都沒問題,就差在main裡的行程我不會叫,
總而言之就是有一個行程執行Producer()
另一個執行Customer..
希望各位先進能幫我解決這一個問題
謝謝
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int Queue[11];
int Counter;
void Clear_Queue(){
int i;
for( i = 0;i<11;i++){
Queue[i]=0;
}
}
int random_at_range ( int lower, int upper)
{
return rand ( ) % (upper-lower+1) + lower;
}
void Producer(){
int i;
Counter=random_at_range(1,10);
Clear_Queue();
for(i=0;i<=Counter;i++){
Queue[i] = random_at_range(1,100);
}
}
void Customer(){
int i;
if(Counter==0){
printf("Queue is null\n");
return;
}
for(i=0;i<=Counter;i++){
printf("Queue[%d]=%d\n",i,Queue[i]);
}
}
int main()
{
srand ( (unsigned) time ( NULL ) );
int pid;
pid = fork();
if(pid == 0){
while(1){
Producer();
printf("excute Producer\n");
sleep(1);
}
exit(1);
}
else if(pid >0){
while(1){
Customer();
printf("excute customer\n");
sleep(1);
}
}
}
|