当前位置: 技术问答>linux和unix
信号方面的问题请教.请大家指点
来源: 互联网 发布时间:2016-02-10
本文导语: 我是想让 链接库 在一定条件下给 程序 发一个自己定义的信号的.信号响应函数我需要在 程序里实现.于是我打算做一个传递函数的参数来实现这个过程. 以下代码实现: // ------------lib.cpp #include typedef void (*fn_t)...
我是想让 链接库 在一定条件下给 程序 发一个自己定义的信号的.信号响应函数我需要在 程序里实现.于是我打算做一个传递函数的参数来实现这个过程.
以下代码实现:
// ------------lib.cpp
#include
typedef void (*fn_t)(int);
void initlib(fn_t fn)
{
signal(SIGUSR1,fn);
raise(SIGUSR1);
}
//----------main.cpp
#include
#include "lib.cpp"
static void sig_fn(int signo)
{
}
int main(void)
{
initlib(sig_fn);
while(1)
pause();
return 1;
}
现在单独编译都可以过的去.在link的时候说多次定义 initlib(void (*)(int)) 这是为啥哪?
再请教一下如我这样的要求,一般要怎么设计这个信号哪?
以下代码实现:
// ------------lib.cpp
#include
typedef void (*fn_t)(int);
void initlib(fn_t fn)
{
signal(SIGUSR1,fn);
raise(SIGUSR1);
}
//----------main.cpp
#include
#include "lib.cpp"
static void sig_fn(int signo)
{
}
int main(void)
{
initlib(sig_fn);
while(1)
pause();
return 1;
}
现在单独编译都可以过的去.在link的时候说多次定义 initlib(void (*)(int)) 这是为啥哪?
再请教一下如我这样的要求,一般要怎么设计这个信号哪?
|
/* lib.h */
#ifndef MYSIGLIB_H
#define MYSIGLIB_H
/* type */
typedef void (*fn_t)(int);
/* func dec */
void initlib(fn_t fn);
#endif
/* lib.cpp */
#include "lib.h"
void initlib(fn_t fn)
{
signal(SIGUSR1, fn);
}
/**********************/
/* main.cpp */
#include
/* signal handler */
static void sig_fn(int signo)
{
/* TODO */
}
/* main */
int main()
{
initlib(sig_fn);
while (1)
pause();
return 0;
}
#ifndef MYSIGLIB_H
#define MYSIGLIB_H
/* type */
typedef void (*fn_t)(int);
/* func dec */
void initlib(fn_t fn);
#endif
/* lib.cpp */
#include "lib.h"
void initlib(fn_t fn)
{
signal(SIGUSR1, fn);
}
/**********************/
/* main.cpp */
#include
/* signal handler */
static void sig_fn(int signo)
{
/* TODO */
}
/* main */
int main()
{
initlib(sig_fn);
while (1)
pause();
return 0;
}