查看單個文章
舊 2006-11-01, 02:33 PM   #1
saltv2 帥哥
註冊會員
榮譽勳章
UID - 20474
在線等級: 級別:15 | 在線時長:318小時 | 升級還需:2小時級別:15 | 在線時長:318小時 | 升級還需:2小時級別:15 | 在線時長:318小時 | 升級還需:2小時級別:15 | 在線時長:318小時 | 升級還需:2小時級別:15 | 在線時長:318小時 | 升級還需:2小時
註冊日期: 2003-01-01
VIP期限: 2007-10
住址: 浩瀚宇宙
文章: 135
精華: 0
現金: 1120 金幣
資產: 5120 金幣
預設 請問一題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);
}
}
}
saltv2 目前離線  
送花文章: 5, 收花文章: 4 篇, 收花: 6 次
回覆時引用此帖