為什麼這篇Fgets printf鄉民發文收入到精華區:因為在Fgets printf這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ist123 (123)看板C_and_CPP標題[問題] fgets與pipe一問時間Sun ...
開發平台(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
現在改成
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)