2016-01-30 61 views
1

讓我們假設我有一個C++程序產生輸出所有的時間這樣如何從背景獲取stdout?

#include <iostream> 

using namespace std; 

void main() 
{ 
    int i=0; 
    while(1) 
    { 
     cout << (i++)%10 << endl; 
    } 
} 

我現在要在一個遠程Linux服務器上的後臺運行此程序。如果我這樣做

nohup ./program &>/dev/null & 

然後我根本沒有得到任何輸出。如果我做

nohup ./program & 

所有的輸出寫入nohup.out洪泛我的硬盤。

如何在後臺關閉輸出,並在程序處於前臺時打開輸出到控制檯?

+0

似乎您要求在登錄到遠程服務器時在終端上打印進程,並且不要打印任何文件當你註銷時。你能澄清你的具體情況下「背景」和「前景」之間的區別嗎? – sal

+0

當我登錄到遠程服務器時,進程不應該打印到終端,不。在我告訴他「告訴我發生了什麼事」之前,它不應該在任何地方打印。然而,計算必須始終完成。 – JHnet

+0

好的。你認爲如何告訴節目「告訴我發生了什麼事」?對我來說,就像你應該把你的程序放入一個邏輯。或者在一個包裝器外殼腳本中。 – sal

回答

0

只是猜測,但你可以鏈接nohup.out/dev/null並刪除鏈接打開登錄到文件。

創建符號鏈接: ln -s /dev/null nohup.out

刪除鏈接: rm nohup.out

如果刪除後的鏈接,你可能要與

touch nohup.out

創建它的nohup不創建日誌文件