用户手动调整窗口大小,会触发信号!
#include <iostream>
using namespace std;
extern "C"
{
#include <sys/ioctl.h>
#include <signal.h>
#include <unistd.h>
#include <termios.h>
}
void print_winsize(int fd)
{
struct winsize size;
if(ioctl(fd,TIOCGWINSZ,&size) < -1)
{
cout << "get print window size failed" << endl;
}
else
{
cout << size.ws_row << " rows , "
<<size.ws_col << "cols" << endl;
}
}
void sig_winch(int signum)
{
cout << "Window changed: " << endl;
print_winsize(STDIN_FILENO);
}
int main()
{
if(SIG_ERR == signal(SIGWINCH,sig_winch))
{
cout << "signal register failed" << endl;
return -1;
}
print_winsize(STDIN_FILENO);
for(;;)
{
pause();
}
return 0;
}