当前位置: 技术问答>linux和unix
一个signal的问题,gdb调试都无反应了
来源: 互联网 发布时间:2017-02-04
本文导语: #include #include #include #include void sig_handler(int signo) { char data[100]; int len ; len = read(STDIN_FILENO,&data,100); data[len]=0; printf("This signal is : %dn",signo); printf("%sn",data); exit(0); } int main() { int...
#include
#include
#include
#include
void sig_handler(int signo)
{
char data[100];
int len ;
len = read(STDIN_FILENO,&data,100);
data[len]=0;
printf("This signal is : %dn",signo);
printf("%sn",data);
exit(0);
}
int main()
{
int oflags;
signal(SIGINT,sig_handler);
signal(SIGTERM,sig_handler);
signal(SIGIO,sig_handler);
fcntl(STDIN_FILENO,F_SETOWN,getpid());
printf("ID:%dn",getpid());
oflags = fcntl(STDIN_FILENO,F_GETFL);
fcntl(STDIN_FILENO,F_SETFL,oflags|FASYNC);
while(1);
}
Breakpoint 1 at 0x40125e: file sig.c, line 24.
(gdb) r
Starting program: /cygdrive/c/a/sig
[New Thread 9760.0x17cc]
[New Thread 9760.0x24a8]
ID:9760
Breakpoint 1, main () at sig.c:24
24 fcntl(STDIN_FILENO,F_SETFL,oflags|FASYNC);
(gdb) n
25 while(1);
(gdb) n
n
adflasjdflasfk
adflj
asdfkl
gggggh
无法退出来了。。。
|
没问题啊.
[liangdong@jx-csblog01.jx.baidu.com src]$ ./main
ID:27784
123
This signal is : 29
, len is : 4
123
你看到len是4了么, read是底层I/O, 只认识字节, 回车也是1字节, 所以len是4.
[liangdong@jx-csblog01.jx.baidu.com src]$ ./main
ID:27784
123
This signal is : 29
, len is : 4
123
你看到len是4了么, read是底层I/O, 只认识字节, 回车也是1字节, 所以len是4.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。