2014-03-14 34 views
0

我試圖獲取我的程序在終端中運行時的窗口大小。在Xcode中,我編輯了該方案,以便在Xcode中運行環境變量LINESCOLUMNS,並且在那裏運行良好。但是,當我點擊產品下的可執行文件並嘗試在終端內運行它時,它會出現段錯誤。任何想法我做錯了什麼?這與我的#includes有什麼關係?這裏是我的基本代碼:C++調用getenv(「LINES」)或getenv(「COLUMNS」)在Xcode中運行正常,當在終端運行時發生segfaults

#include <iostream> 

using namespace std ; 

int main(int argc, const char * argv[]) { 

    char* r = getenv("COLUMNS") ; 

    cout << r << endl ; 

    return 0; 
} 

回答

1

如果在終端出現segfaults,它幾乎肯定是因爲環境變量不存在,因此rNULL。所以,你的程序會過得更好檢查的是:

#include <iostream> 
#include <cstdlib> 

int main (int argc, const char * argv[]) { 
    char *r = std::getenv ("COLUMNS"); 
    std::cout << ((r == NULL) ? "?" : r) << '\n'; 
    return 0; 
} 

從終端運行以下命令,看看你會得到什麼:

echo "!$COLUMNS!" 

如果是!!,你需要弄清楚如何得到變量設置(和出口,使它們看起來子流程),如用:

COLUMNS=$(tput cols) 
export COLUMNS 
+0

謝謝你,幫我弄明白。你是對的,沒有設置'LINES'和'COLUMNS'。有些人〜/ .bash_profile在我昨天玩弄時出現了混亂,我認爲這兩個環境變量都沒有正確設置。我編輯.bash_profile,現在它似乎工作。 – AdamJames

相關問題