[問題] fgets與pipe一問

看板C_and_CPP作者 (123)時間11年前 (2012/10/28 20:28), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在我要執行fgets那個迴圈時 下面那個printf就不會執行 不過我只要把while那行刪掉 他的111就會出現 但是我stdin的值還是無法顯示出來 不知道是哪邊有問題 我有把它單獨出來測試過 可是正確的把我的stdin印出 這代表我pipe應該沒有接錯 但是只要加到我的主程式後 就是不會執行 研究了好幾天還是搞不出來 跪求大大幫忙 餵入的資料(Input): 預期的正確結果(Expected Output): 印出我stdin的值 錯誤結果(Wrong Output): 完全不會執行while後的那行 程式碼(Code):(請善用置底文網頁, 記得排版) close (STDIN); dup ( pfd_1 [READ] ); close ( pfd_1 [READ] ); close ( pfd_1 [WRITE] ); while (fgets ( strbuf, 1024,STDIN) != NULL ) wprintw(der[3], "111%s\n", STDIN); wrefresh(der[3]); memset( strbuf,'\0',sizeof(strbuf)); 補充說明(Supplement): 我是我把我的指令寫在前一個PIPE的write 想要把值丟給bash執行在將直接到另一個pipe的sidin 再從這邊把我給bash算完的值從stdin中讀出 最後在印出 不知道到底是哪邊出問題 希望大大幫忙我>< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.184.195

10/28 20:43, , 1F
while 加 refresh試試
10/28 20:43, 1F

10/28 20:44, , 2F
^裡面
10/28 20:44, 2F

10/28 21:12, , 3F
還是不行>< 不過還是很感恩你的幫助喔
10/28 21:12, 3F

10/28 21:20, , 4F
看來是fgets沒讀完卡住,你的指令有加\n或EOF嗎
10/28 21:20, 4F

10/28 21:25, , 5F
你是說我的STDIN最後有沒有加\n嗎? 我來去研究一下 感恩
10/28 21:25, 5F

10/28 21:26, , 6F
print那行傳入的參數應該是buffer吧?
10/28 21:26, 6F

10/28 21:31, , 7F
是buff 我這邊打錯 本來打對的 感恩喔 還在測試+\n中感恩
10/28 21:31, 7F

10/28 21:54, , 8F
想不到方法讓我stdin輸出的值加\n.....
10/28 21:54, 8F

10/28 21:54, , 9F
原本想要用read出來在加\n 可是好像不行..
10/28 21:54, 9F
現在改成 write (STDIN, cmdbuff_2, sizeof(cmdbuff_2)); cmdbuff_2[ sizeof(cmdbuff_2)-1 ] = '\0'; wprintw(der[3], "111%s\n", cmdbuff_2); 加入結尾字元 這樣可以顯示出111 之後cmdbuff_2他會變成亂碼 用%d它可以顯示出一串數字 所以我這樣取只取到記憶體位址嗎? 再次感謝各位幫忙 感恩 ※ 編輯: ist123 來自: 140.122.184.195 (10/28 22:08)
文章代碼(AID): #1GZIJulh (C_and_CPP)