我试图在终端中运行时获取程序的窗口大小。在Xcode中,我编辑了方案,以便设置LINES
和COLUMNS
环境变量在Xcode中运行,并且它在那里运行良好。但是,当我单击Products下的可执行文件并尝试在终端内运行它时,会出现段错误。知道我做错了什么吗?它与我的#includes
有什么关系吗?这是我的基本代码:
#include <iostream>
using namespace std ;
int main(int argc, const char * argv[]) {
char* r = getenv("COLUMNS") ;
cout << r << endl ;
return 0;
}
答案 0 :(得分:1)
如果它在终端中出现段错误,那几乎可以肯定是因为环境变量不存在,因此r
将是NULL
。所以你的程序最好检查一下:
#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