[問題] odd-even sort與pipe

看板C_and_CPP (C/C++)作者 (BOBO)時間15年前 (2010/11/30 00:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
開發平台: (例: 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
文章代碼(AID): #1Cyyv2WA (C_and_CPP)
文章代碼(AID): #1Cyyv2WA (C_and_CPP)