等待RETURN按鍵的一種方法是調用std :: ignore()。但是,當我使用nohup時std :: ignore()總是立即返回。有沒有其他的方法來等待按鍵,或只是返回,將與nohup一起工作?nohup和std :: ignore()不一起工作
回答
當您使用nohup
運行一個命令,它所以沒有辦法等待任何一種按鍵的連接你的命令到/ dev/null的標準輸入。
當您嘗試從/ dev/null讀取數據時,它會自動響應EOF。
我想這可以使用下面的代碼(未經測試)檢查:
#include <unistd.h>
...
if (isatty(fileno(stdin))) ...
這應該工作,爲標準保證std::cin
與標準輸入有關。
我解決了這個問題:
std::this_thread::sleep_for(std::chrono::system_clock::duration::max());
所以你只是想永遠睡覺?我從來不會從這個問題中猜出來。 – Useless
從標準輸入讀取將立即返回,所以唯一要做的就是無限期地等待,我想。 – user1095108
我指出你從來沒有說過你想要達到的目標,所以除了你之外,沒有人能夠猜出什麼行爲比立即返回或者爲什麼更好。這限制了答案的潛在質量。 – Useless
是否存在一種替代的方式來等待一個按鍵
從哪裏?按鍵不得不從某個地方來。您期望從控制終端中獲得它,然後您故意將該進程與該終端斷開連接。
是的,存在的替代品:
- ,如果你想從那裏輸入
- 從X讓你的按鍵事件,而不是不從終端斷開連接,假設你有運行 圖形環境
- 創建一個新的終端並從那裏獲取您的按鍵。這可能意味着在實踐中運行xterm,所以它不是微不足道的。
或只是返回,將與nohup一起工作?
std::ignore()
已經確實回報,而你抱怨說。等待按鍵是唯一能爲你工作的東西嗎?
我有一個應用程序類,對於控制檯應用程序,只是std :: ignore()等待一個RETURN,但是這會立即返回,所以無限期的延遲是要走的路。 – user1095108
- 1. PHP NOHUP不工作
- 2. 無法獲得nohup,open_init_pty和sudo一起工作
- 3. 包裝std :: ignore
- 4. IGNORE不工作的Mysql
- 5. shell腳本不能與nohup一起工作
- 6. pm2 --ignore-watch不工作
- 7. istream :: ignore()如何工作?
- 8. 替代std :: istream :: ignore
- 9. 爲什麼std :: uppercase不能和字符串一起工作?
- 10. 在sh腳本中nohup不起作用
- 11. boost :: variant與std :: string一起工作嗎?
- 12. std :: ignore的可能實現
- 13. INSERT IGNORE不能正常工作
- 14. unix nohup sqlplus不能正常工作
- 15. scp與nohup在後臺不會工作
- 16. 爲什麼ssh + nohup不能與網絡相關的進程一起工作?
- 17. 如何工作UNIQUE + INSERT IGNORE?
- 18. 使用nohup時,MATLAB中的createTasks和createJob命令不起作用?
- 19. 無法使用std :: getline()與ifstream和ofstream一起工作
- 20. std :: endl與cout和wcout一起工作嗎?
- 21. 如何使unique_ptr的成員與std :: move和std :: swap一起工作?
- 22. std :: string ==不工作?
- 23. std :: bind不工作
- 24. std :: inserter不工作
- 25. rvm和Capistrano不能一起工作:rvm_bin_path設置不起作用
- 26. std ::刪除不起作用
- 27. UILongPressGestureRecognizer和UITextField不能一起工作
- 28. impromptu.js和infieldlabel.js不會一起工作
- 29. PostSharp和EntityFramework 5不能一起工作
- 30. AngularJS和JQuery不能一起工作
是的,但它不應該返回。在我的情況下,它會導致無限循環。請注意,輸入的重定向僅在Linux下發生。 – user1095108
這就是從/ dev/null讀取的內容_does_ - 立即返回,零字節讀取。哦,POSIX指定nohup _可以從未指定的文件重定向標準輸入,如果有關聯的終端。在任何平臺上閱讀它可能都很脆弱。 – Useless
如果在流結束時它不應該返回,它應該怎麼做?永遠阻止? –