时钟信号问题,求助高手

suyupin 2004-11-21 04:13:13
void sig_alrm(int signo)
{
alarm(0);
printf("hello world");

if(signal(SIGALRM,sig_alrm) == SIG_ERR)
printf("set signal error ");
alarm(10);
}
int main()
{
if(signal(SIGALRM,sig_alrm) == SIG_ERR)
printf("set signal error ");
while(1);
retrurn 0;
}

这个代码独立编译可以打印出东西来,可是加到程序中不就行了,,
ps.那个程序比较大,升信号※处理信号都是类的成员函数。
有时候信号出现一次,下次就不出现了。
不知道是不是那个系统函数会屏蔽了信号???
万思不得其解啊,,困扰了几个礼拜了,,求助ing!!!
...全文
115 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
suyupin 2004-11-22
  • 打赏
  • 举报
回复
csdn搞什么,,,,
说我发危害论坛的言论,下半段代码就是发不上来。。
suyupin 2004-11-22
  • 打赏
  • 举报
回复
void DBOP::init_alrm()
{
Ini *pIni = Ini::instance();
char cCommitTimeout[20];
char cCommitMaxCount[20];
int iRet = 0;

iRet = pIni->readKey("BATCH_TRANS", "COMMIT_TIMEOUT", cCommitTimeout);
if (iRet == -1)
{
ExceptionMsg e;
e.setMsg("从配置文件读取[BATCH_TRANS]->COMMIT_TIMEOUT失败");
throw Exception("读配置文件失败",e);
}
DBOP::m_ulCommitTimeOut = atol(cCommitTimeout);

iRet = pIni->readKey("BATCH_TRANS", "COMMIT_MAXCOUNT", cCommitMaxCount);
if (iRet == -1)
{
ExceptionMsg e;
e.setMsg("从配置文件读取[BATCH_TRANS]->COMMIT_MAXCOUNT失败");
throw Exception("读配置文件失败",e);
}
DBOP::m_ulCommitMaxCount = atol(cCommitMaxCount);

printf("init_alrm()-->Maxcount=%ld\n", m_ulCommitMaxCount);
printf("init_alrm()-->timeout=%ld\n", m_ulCommitTimeOut);

if (signal(SIGALRM, sig_alrm) == SIG_ERR)
printf("signal error\n");

alarm(DBOP::m_ulCommitTimeOut);

}

suyupin 2004-11-22
  • 打赏
  • 举报
回复
发不出代码来 ,,,
smaxll 2004-11-22
  • 打赏
  • 举报
回复
最好把信号相关的代码也贴出来,
单纯从你上面的代码很难看出问题
tengulre 2004-11-22
  • 打赏
  • 举报
回复
up
onlyf 2004-11-22
  • 打赏
  • 举报
回复
建议使用sigaction()函数。
blueflame 2004-11-21
  • 打赏
  • 举报
回复
你的这段程序的目的是什么?

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧