2011-07-11 19 views
5

可能重複:
Getting terminal width in C?如何從C/C++程序中查找終端列的數量?

在Linux和OS X,我的殼報道$柱有終端窗口的寬度 - 和調整窗口的大小將調整這個shell變量。

但在我的C/C++程序中,getenv(「COLUMNS」)似乎沒有找到變量。

有人有解釋嗎?或者讓我的C++程序找出它運行的終端的寬度(對於一些幫助消息字換行)的替代建議?

+3

'$ LINES'和'$ COLUMNS'是*外殼*變量,而不是* *的環境變量。 –

回答

10

也許是這樣的:

#include <sys/ioctl.h> 
#include <stdio.h> 

int main() 
{ 
    struct winsize w; 
    ioctl(0, TIOCGWINSZ, &w); 

    printf("lines %d\n", w.ws_row); 
    printf("columns %d\n", w.ws_col); 
    return 0; 
} 

從直摘自:Getting terminal width in C?

+0

順便說一下,這不是「便攜式」(POSIX未指定),但在實踐中幾乎在任何地方都可以使用。 –

+0

在我的情況下效果很好,謝謝! –

+1

如果你想處理窗口的大小調整,你將不得不處理'SIGWINCH'信號。 –