Programming languages Linux中的信号
我正在研究奥雷利书中的信号。我遇到了这个Programming languages Linux中的信号,programming-languages,linux,signals,Programming Languages,Linux,Signals,我正在研究奥雷利书中的信号。我遇到了这个 #include <signal.h> typedef void (*sighandler_t)(int);----> func ptr returns void. uses typedef sighandler_t signal (int signo, sighandler_t handler); typedef可以应用于函数吗 我想知道它是怎么工作的 typedef可以应用于函数吗 是的 我想知道它是怎么工作的 正如你读过的例子
#include <signal.h>
typedef void (*sighandler_t)(int);----> func ptr returns void. uses typedef
sighandler_t signal (int signo, sighandler_t handler);
typedef可以应用于函数吗
我想知道它是怎么工作的
typedef可以应用于函数吗
是的
我想知道它是怎么工作的
正如你读过的例子——在使用C语言25年后,语法是相当模糊的,我仍然需要考虑它,但它是非常直接的。如果使用typedefs,传递和存储指向函数的指针将大大简化
我建议您绕道学习函数指针和函数的typedef,或者暂时将其视为已读,稍后再返回函数指针,因为您不可能是一名C程序员,也不可能回避它们 一个信号就像一个中断,当它由用户级生成时,会调用操作系统的内核,并相应地执行操作。为了创建一个信号,这里我只给你举一个例子
#include<stdio.h>
#include<signal.h>
#include<sys/types.h>
void sig_handler1(int num)
{
printf("You are here becoz of signal:%d\n",num);
signal(SIGQUIT,SIG_DFL);
}
void sig_handler(int num)
{
printf("\nHi! You are here becz of signal:%d\n",num);
}
int main()
{
signal(SIGINT,sig_handler1);
signal(SIGQUIT,sig_handler);
while(1)
{
printf("Hello\n");
sleep(2);
}
}
运行此代码后,如果按Ctrl+C,则会显示一条消息-您在这里是因为信号:2,而不是因为我们已根据操作更改了信号而退出进程。例如,Ctrl+C是一个可屏蔽信号
要了解更多关于信号和信号类型的示例,请访问以下链接:
你好,马茨。谢谢你的建议。我知道指针、函数指针和typedef。我没有在函数上应用typedef。后来,当我在函数上应用typedef时,函数ptrs起作用。如果您知道这些信号API,请解释我并让我清楚
#include<stdio.h>
#include<signal.h>
#include<sys/types.h>
void sig_handler1(int num)
{
printf("You are here becoz of signal:%d\n",num);
signal(SIGQUIT,SIG_DFL);
}
void sig_handler(int num)
{
printf("\nHi! You are here becz of signal:%d\n",num);
}
int main()
{
signal(SIGINT,sig_handler1);
signal(SIGQUIT,sig_handler);
while(1)
{
printf("Hello\n");
sleep(2);
}
}