2011-10-13 52 views
0

首先,什么是DSUSP?禁用DSUSP - 终端控制

我尝试使用下面的代码行来禁用它:

tntty.c_cc[VDSUSP] = _POSIX_VDISABLE; 

但我得到的错误“VDSUSP是未申报”

回答

1

Linux的termios(3)手册页介绍了它这样(重点煤矿):

VDSUSP(未在POSIX; 不能在Linux下支撑; 031,EM, ç trl-Y)延迟暂停字符:当用户程序读取 字符时发送SIGTSTP信号。当IEXTEN 和ISIG已设置且系统支持作业控制,然后不是 作为输入传递时识别。

由于这不是一个POSIX指定的索引,你应该测试它的存在,只试图定义它禁用它的平台上:

#ifdef VDSUSP 
tntty.c_cc[VDSUSP] = _POSIX_VDISABLE; 
#endif 
+0

配置测试?我认为在源代码中使用'#ifdef VDSUSP'会更有意义... –

+0

@R .:它不是'enum'常量吗? – caf

+0

编号根据http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/termios.h.html“下标值应适用于#if预处理指令”。 –