#include<termios.h> int tcdrain(int filedes); int tcflow(int filedes, int action); int tcflush(int filedes, int queue); int tcsendbreak(int fledes, int duration); //四个函数返回值:若成功则返回0,出错则返回-1.tcdrain函数等待所有输出都被发送。tcflow用于对输入和输出流控制进行控制。action参数应当是下列四个值之一。
#include <stdio.h> char *ctermid(char *ptr); //若成功则返回指向控制终端名的指针,若出错则返回指向空字符串的指针。如果ptr非null,则它被认为是一个指针,指向长度至少为L_ctermid字节的数组,进程控制终端名存放在该数组中。常量
#include<unistd.h> int isatty(int filedes); //若为终端设备则返回1,否则返回0. char *ttyname(int filedes); //返回值:指向终端路径名的指针,出错则返回NULL。
#include <stdio.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <signal.h>
#include <unistd.h>
static void
pr_winsize(int fd){
struct winsize size;
if(ioctl(fd,TIOCGWINSZ,(char*)&size) < 0){
perror("ioctl");
return;
}
printf("%d rows, %d columns\n",size.ws_row, size.ws_col);
}
static void
sig_winch(int signo){
printf("SIGWINCH received.\n");
pr_winsize(STDIN_FILENO);
}
int main(void){
if(isatty(STDIN_FILENO) == 0){
perror("isatty");
return -1;
}
if(signal(SIGWINCH,sig_winch) == SIG_ERR){
perror("signal");
return -1;
}
pr_winsize(STDIN_FILENO);
for(;;){
pause();
}
}运行结果:《UNIX环境高级编程》笔记--行控制函数、终端标识、终端窗口大小,布布扣,bubuko.com
《UNIX环境高级编程》笔记--行控制函数、终端标识、终端窗口大小
原文:http://blog.csdn.net/todd911/article/details/20562151