在Linux和OS X,我的殼報道$柱有終端窗口的寬度 - 和調整窗口的大小將調整這個shell變量。
但在我的C/C++程序中,getenv(「COLUMNS」)似乎沒有找到變量。
有人有解釋嗎?或者讓我的C++程序找出它運行的終端的寬度(對於一些幫助消息字換行)的替代建議?
在Linux和OS X,我的殼報道$柱有終端窗口的寬度 - 和調整窗口的大小將調整這個shell變量。
但在我的C/C++程序中,getenv(「COLUMNS」)似乎沒有找到變量。
有人有解釋嗎?或者讓我的C++程序找出它運行的終端的寬度(對於一些幫助消息字換行)的替代建議?
也許是這樣的:
#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;
}
順便說一下,這不是「便攜式」(POSIX未指定),但在實踐中幾乎在任何地方都可以使用。 –
在我的情況下效果很好,謝謝! –
如果你想處理窗口的大小調整,你將不得不處理'SIGWINCH'信號。 –
'$ LINES'和'$ COLUMNS'是*外殼*變量,而不是* *的環境變量。 –