2013-11-15 104 views
2

我正在編寫一個工具R有一個粗糙的CLI(命令行接口),它從套接字(正在工作)進行非阻塞讀取。我想通過從控制檯以非阻塞方式讀取單個字符(如果存在)來同時檢查新命令。一個簡單的例子* R *非阻塞控制檯讀取R

repeat{ 
    newCmdChar <- nonblockingReadConsole() 
    if (newCmdChar == NULL) doStuffReadingNonblockingSocket() 
    else switch(newCmdChar, 
     a = doThis(), 
     b = doThat(), 
     x = break) 
} 

各種實驗在一個非阻塞方式失敗,文件(「標準輸入」),在掃描(),readlines方法()等置換在此描述的一種方法How do you read a single character from console in R (without RETURN)?但它需要的工作通過一個開放的圖形設備,我希望避免這種情況。

問題

  1. 有沒有辦法做到nonblockingReadConsole()來得到一個 人物?如果是這樣,怎麼樣?
  2. 更好的探索一下R圖形用戶界面包? (我是 一個新手,對那些無知)?如果是這樣,建議?

謝謝:)

/喬治

回答

0

恐怕答案是你可能無法在非阻塞的方式獲得從R GUI的命令行輸入。它違背了R的單線程本質。

如果您需要這種行爲,那麼使用不同的語言編寫人機交互部分,並調用R進行計算。或者使用其中一個GUI工具包,如鏈接到的問題中所述。

+0

我很高興被證明是錯誤的,當然。 –

+0

您的陳述當然符合我的實驗日期:)感謝您提供的建議。 – user2996175

0

更新:我已經在上面引用的鏈接中實現了「使用鍵盤迴調打開grDevice」方法,並且它比預期更方便。歡呼聲,/ geg