![]() |
請問一題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); } } } |
這要在LINUX上執行喔...
引用:
|
因此,請問大大,
如果我要在main裡面寫二個行程... 一個呼叫Producer()的 function 另一個呼叫Customer()的function 我該怎麼做呢 在main裡面我該怎麼寫? |
你可以用它fork()之後的pid值來判斷
你要宣告一個pid_t結構的變數 接下來就可以使用pid的數值去判斷了 你原來是宣告int pid 因為pid是一個結構化的東西 所以沒辦法用int 去接 一定要使用它的結構形態才可以使用 引用:
可以使用switch來檢驗你有沒有fork()成功 引用:
|
所有時間均為台北時間。現在的時間是 09:35 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *