[英]Reading stdin from another thread
我在unix上的代碼中使用了p_threads。 在我的主程序中,我有一個線程節點,它創建了2個線程,其中一個線程使用getline從標准輸入讀取。 所有這一切都很好。 除了在我的代碼中的某些時候,我必須“重新啟動從標准輸入讀取的線程”。 當我這樣做時,我無法從標准輸入中讀取任何內容。
我有什么建議可能做錯了???
謝謝。
這是我從stdin讀取的部分
void* parseCmd(void* s)
{
sigset_t new2;
struct sigaction act;
sigemptyset(&new2);
sigaddset(&new2,SIGINT);
pthread_sigmask(SIG_UNBLOCK, &new2, NULL);
act.sa_handler = interrupt;
sigaction(SIGINT, &act, NULL);
signal(SIGUSR1, signal_Handler);
std::string input("");
while (1)
{
std::cout << "SERVANT > ";
std::getline(std::cin, input);
doTheWork(input);
cin.clear();
std::cout << std::endl;
if(global_shutdown==1 || auto_global_shutdown==1)
break;
}
cout<<"cmd thread exit.Main\n";
return 0;
}
您可能正在中止仍然連接到標准輸入的線程,請記住您在執行getline時中止了線程。
現在我不知道是否有辦法獲取標准輸入指針並釋放它以獲得更多行但是可能有一種方法可以繼續讀取前一個線程已讀取的行。
你需要做的是:
當您需要該值時,只需使用您用於傳遞給getline的靜態變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.