BBS.ChinaUnix.net
首页
|
新闻
|
Linux
|
FreeBSD
|
AIX
|
Windows
|
博客
|
论坛
|
存储
|
网络
|
人才
|
Wiki
|
资料
|
读书
|
手册
|
下载
|
空间
|
搜索
会员:
密码:
免费注册
|
忘记密码
|
会员登录
|
搜索
|
帮助
SIGALRM失效了。。
1
2
››
首页
»
论坛
»
C/C++
»
论坛跳转 ...
> Functional编程
> 数据仓库与数据挖掘
> 门户网站运维
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 主题推广专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
最近访问的论坛 ...
时代冠军主机588元/两年
|
送Windows新书+500分+2G U盘
| 新版块:
OpenAPI
、
数据仓库与数据挖掘
、
门户网站运维
、
Functional编程
|
"奥运之夏"获奖摄影作品展示
[
打印
] [
订阅
] [
收藏
] [
本帖文本页
] [
推荐此主题给朋友,立即获积分
]
maxxfire
风云使者
UID:473990
注册:2006-10-9
最后登录: 2008-10-07
帖子:
586
精华:0
可用积分:585 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:厦门
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
1楼
发表于 2008-5-23 09:27
APUE2 10.6节的那个例子。。
#
include
<
pwd
.
h
>
#
include
<
stdio
.
h
>
#
include
<
signal
.
h
>
void
err_sys
(
const
char
*
s
)
{
printf
(
s
)
;
exit
(
0
)
;
}
static
void
my_alarm
(
int
signo
)
{
struct
passwd
*
rootptr
;
printf
(
"in signal handler\n"
)
;
if
(
(
rootptr
=
getpwnam
(
"root"
)
)
=
=
NULL
)
err_sys
(
"getpwnam(root) error"
)
;
alarm
(
1
)
;
}
int
main
(
void
)
{
struct
passwd
*
ptr
;
signal
(
SIGALRM
,
my_alarm
)
;
alarm
(
1
)
;
for
(
;
;
)
{
if
(
(
ptr
=
getpwnam
(
"mail"
)
)
=
=
NULL
)
err_sys
(
"getpwnam error"
)
;
if
(
strcmp
(
ptr
-
>
pw_name
,
"mail"
)
!
=
0
)
printf
(
"return value corrupted!, pw_name = %s\n"
,
ptr
-
>
pw_name
)
;
}
}
信号响应了一次就无法响应第二次了,咋回事。。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
在残缺中追寻完美。。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
scutan
(冬日夜雨)
精灵使
Linux newbie
UID:551201
注册:2007-4-13
最后登录: 2008-10-07
帖子:
4845
精华:
10
可用积分:4464 (小富即安)
信誉积分:345
专家积分:769 (本版:352)
空间积分:815
推广积分:201
来自:成都
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
2楼
发表于 2008-5-23 09:34
signal函数就是这样子的,可以在信号处理函数中再一次调用signal注册,或者使用sigaction函数。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
全力以赴每一秒!
勿在浮砂筑高台!
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
maxxfire
风云使者
UID:473990
注册:2006-10-9
最后登录: 2008-10-07
帖子:
586
精华:0
可用积分:585 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:厦门
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
3楼
发表于 2008-5-23 09:36
QUOTE:
原帖由
scutan
于 2008-5-23 09:34 发表
signal函数就是这样子的,可以在信号处理函数中再一次调用signal注册,或者使用sigaction函数。
啊,,会这样啊,,这样也行。。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
在残缺中追寻完美。。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
maxxfire
风云使者
UID:473990
注册:2006-10-9
最后登录: 2008-10-07
帖子:
586
精华:0
可用积分:585 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:厦门
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
4楼
发表于 2008-5-23 10:17
又发现一个很奇怪的问题,,SIGCLD导致sleep()函数失效。。
#
include
<
stdio
.
h
>
#
include
<
stdlib
.
h
>
#
include
<
signal
.
h
>
void
sig_cld
(
int
sig
)
{
pid_t
pid
;
int
status
;
printf
(
"SIGCLD received\n"
)
;
if
(
(
pid
=
wait
(
&
status
)
)
<
0
)
/* fetch child status */
perror
(
"wait error"
)
;
if
(
signal
(
SIGCLD
,
sig_cld
)
=
=
SIG_ERR
)
/* reestablish handler */
perror
(
"signal error"
)
;
printf
(
"pid = %d\n"
,
pid
)
;
}
int
main
(
int
argc
,
char
*
argv
[
]
)
{
int
id
;
if
(
signal
(
SIGCLD
,
sig_cld
)
=
=
SIG_ERR
)
perror
(
"signal error"
)
;
if
(
!
(
id
=
fork
(
)
)
)
{
//child.
printf
(
"Child[%d] born.\n"
,
getpid
(
)
)
;
sleep
(
3
)
;
printf
(
"Child[%d] die.\n"
,
getpid
(
)
)
;
_exit
(
0
)
;
}
//parent.
sleep
(
120
)
;
exit
(
1
)
;
}
按程序所写,父进程要睡眠2分钟再退出的,可是SIGCLD一到,执行完sig_cld()父进程就退出了。。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
在残缺中追寻完美。。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
maxxfire
风云使者
UID:473990
注册:2006-10-9
最后登录: 2008-10-07
帖子:
586
精华:0
可用积分:585 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:厦门
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
5楼
发表于 2008-5-23 10:18
这个signal怎么这样啊,,别这样啊,,我想编程啊。。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
在残缺中追寻完美。。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
cugb_cat
广告杀手-大法师
UID:342049
注册:2005-11-27
最后登录: 2008-10-07
帖子:
9733
精华:
6
可用积分:9415 (腰缠万贯)
信誉积分:110
专家积分:434 (本版:115)
空间积分:0
推广积分:10
来自:北京海淀中关村
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
6楼
发表于 2008-5-23 10:29
换sigaction试试
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
欢迎访问ToFree社区
www.tofree.org
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
maxxfire
风云使者
UID:473990
注册:2006-10-9
最后登录: 2008-10-07
帖子:
586
精华:0
可用积分:585 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:厦门
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
7楼
发表于 2008-5-23 10:48
对不起,又出现一个问题,sleep导致SIGCLD失效,上面那个程序稍微改一下:
#
include
<
stdio
.
h
>
#
include
<
stdlib
.
h
>
#
include
<
signal
.
h
>
void
sig_cld
(
int
sig
)
{
pid_t
pid
;
int
status
;
printf
(
"SIGCLD received\n"
)
;
if
(
(
pid
=
wait
(
&
status
)
)
<
0
)
/* fetch child status */
perror
(
"wait error"
)
;
if
(
signal
(
SIGCLD
,
sig_cld
)
=
=
SIG_ERR
)
/* reestablish handler */
perror
(
"signal error"
)
;
printf
(
"sighandler get child pid = %d\n"
,
pid
)
;
}
int
main
(
int
argc
,
char
*
argv
[
]
)
{
int
id
,
stat
,
pid
,
i
;
if
(
!
(
id
=
fork
(
)
)
)
{
//child.
printf
(
"Child[%d] born.\n"
,
getpid
(
)
)
;
sleep
(
1
)
;
printf
(
"Child[%d] die.\n"
,
getpid
(
)
)
;
_exit
(
0
)
;
}
//parent.
sleep
(
5
)
;
if
(
signal
(
SIGCLD
,
sig_cld
)
=
=
SIG_ERR
)
perror
(
"signal error"
)
;
sleep
(
3
)
;
exit
(
1
)
;
}
父进程sleep(5)后就直接退出了,sig_cld()未被执行,sleep(3)也未被执行。
似乎sleep与SIGCLD之间有冲突。。
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
在残缺中追寻完美。。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
dxbh
圣骑士
UID:696831
注册:2008-4-25
最后登录: 2008-10-06
帖子:
147
精华:0
可用积分:166 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
8楼
发表于 2008-5-23 11:10
QUOTE:
原帖由
maxxfire
于 2008-5-23 10:48 发表
对不起,又出现一个问题,sleep导致SIGCLD失效,上面那个程序稍微改一下:
#include
#include
#include
void sig_cld(int sig)
{
pid_t pid; int status;
printf("SIGCLD received ...
你sleep(5)后,子进程早退出了,你连SIGCHLD都没有注册,抓得到信号才怪
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
Sorehead
光明使者
UID:161134
注册:2004-5-27
最后登录: 2008-09-25
帖子:
763
精华:0
可用积分:928 (稍有积蓄)
信誉积分:100
专家积分:40 (本版:40)
空间积分:0
推广积分:0
来自:北京
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
9楼
发表于 2008-5-23 12:30
开始的时候总是觉得很多问题不可思议、不能理解,慢慢懂得多了就好了。
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
lanying_wzw
精灵王
UID:151974
注册:2004-4-15
最后登录: 2008-10-05
帖子:
280
精华:0
可用积分:314 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
10楼
发表于 2008-5-23 19:37
sleep()一般是用SIG_ALRM实现的,所以遇到任何信号都会返回,所以睡不够要求的秒数。
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
首页
»
论坛
»
C/C++
»
1
2
››
论坛跳转 ...
> Functional编程
> 数据仓库与数据挖掘
> 门户网站运维
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 主题推广专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计
Copyright © 2001-2008 ChinaUnix.net All Rights Reserved 联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处
京ICP证041476号
清除 Cookies
-
ChinaUnix
-
Archiver
-
WAP
-
TOP
Processed in 0.158322 second(s), 4 queries , Gzip enabled
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计