[問題] odd-even sort與pipe
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
freeBSD
gcc
有問題的code: (請善用置底文標色功能)
http://codepad.org/hiz66dOL
這是我的一份作業,要用fork和pipe來實作odd-even sort
在code中,我已經用很取巧的方式讓他可以work
我知道這樣不行,但是一直找不出為什麼會發生問題,和解決的方法
code中包含一些我覺得比較關鍵性的測試碼,分別是65行和79-84,其餘是註解
65行能讓child[0] child[2] child[4] child[6] child[8]印出sort完各自的結果
在我原本想寫的code中,63行和100行是沒有的,98行也應該是i<LISTNUM
但是如果這樣寫的話,
我發現在child[8]中,one和two都有寫入pipe (測試過child[8]寫完再讀出來可以讀得到)
但是在parent中讀不到tube[9][0]中的值
不論我怎麼試,始終是最後一個pipe在parent中讀不到
奇妙的是,我改加上63和100行,且98行改成i<LISTNUM-1後,是可以被讀到的
這是我的第一個問題...一樣的寫法,為什麼總是最後一個讀不到
第二個問題是,我在79-84那段用來測讀不讀得到寫入tube[9][0]的值的code
如果i=1或5,就能進入if,也能讀得到pipe中的值
如果i=3或7,就不會進入if
這個現象讓我完全無法理解...
我知道我用取巧的方法也是能交作業...但是我不太想這樣做
希望能有神人幫忙解惑,非常感謝...orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.71.238
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章