当前位置: 技术问答>linux和unix
请教大家几个问题
来源: 互联网 发布时间:2015-03-05
本文导语: 1。 for( ; ;) 这个语句在程序中起到什么作用? 2。高级信号处理中的sigaction函数我实在看的很困难,请高手指教! 3。函数名能作函数起始地址返回吗? 4。if(signal(SIGTERM,&terminatehandler)==SIG_ER) { printf("Could...
1。 for( ; ;) 这个语句在程序中起到什么作用?
2。高级信号处理中的sigaction函数我实在看的很困难,请高手指教!
3。函数名能作函数起始地址返回吗?
4。if(signal(SIGTERM,&terminatehandler)==SIG_ER)
{
printf("Couldn't register signal handler!n");
}
我对这条语句的认识是:该语句完成两个功能,一是调用注册信号处理函数,二是如果出错,则输出出错信息。
5。#IF DEFINED(_LINUX_)&&!DEFINED(SI_DERNEL)
#DEFINE SI_KERNEL 0x80
#ENDIF
请问这个语句有什么作用啊?
6。
int main(void)
{
char buffer1[100],buffer2[100];
int i;
struct sigaction act;
act.sa_handler=terminatehandler;
sigemptyset(&act.sa_mask);
act.sa_flags=0;
if(sigaction(SIGTERM,&act,NULL)==-1)
{
printf("Couldn't register signal handler!n");
}
printf("PID of this process:%6d.",getpid()):
……………………………………
……………………………………
请问大家该程序中的
act.sa_handler=terminatehandler;
sigemptyset(&act.sa_mask);
act.sa_flags=0;
是为了达到什么目的??
谢谢大家!!!
2。高级信号处理中的sigaction函数我实在看的很困难,请高手指教!
3。函数名能作函数起始地址返回吗?
4。if(signal(SIGTERM,&terminatehandler)==SIG_ER)
{
printf("Couldn't register signal handler!n");
}
我对这条语句的认识是:该语句完成两个功能,一是调用注册信号处理函数,二是如果出错,则输出出错信息。
5。#IF DEFINED(_LINUX_)&&!DEFINED(SI_DERNEL)
#DEFINE SI_KERNEL 0x80
#ENDIF
请问这个语句有什么作用啊?
6。
int main(void)
{
char buffer1[100],buffer2[100];
int i;
struct sigaction act;
act.sa_handler=terminatehandler;
sigemptyset(&act.sa_mask);
act.sa_flags=0;
if(sigaction(SIGTERM,&act,NULL)==-1)
{
printf("Couldn't register signal handler!n");
}
printf("PID of this process:%6d.",getpid()):
……………………………………
……………………………………
请问大家该程序中的
act.sa_handler=terminatehandler;
sigemptyset(&act.sa_mask);
act.sa_flags=0;
是为了达到什么目的??
谢谢大家!!!
|
1。 for( ; ;) 这个语句在程序中起到什么作用?
A:这个在程序中起到死循环的做用,就是不断的工作。
2。高级信号处理中的sigaction函数我实在看的很困难,请高手指教!
A:The sigaction system call is used to change the action taken by a process on receipt of a specific signal.
signum specifies the signal and can be any valid signal except SIGKILL and SIGSTOP.
If act is non-null, the new action for signal signum is installed from act. If oldact is
non-null, the previous action is saved in oldact.
5。#IF DEFINED(_LINUX_)&&!DEFINED(SI_DERNEL)
#DEFINE SI_KERNEL 0x80
#ENDIF
请问这个语句有什么作用啊?
A:主要是对操作系统的判断。
可以这么理解:
if (defined(_linux_) && !defined (si_dernel))
{
define something;
.....
}
最后一个问题就是,我觉得你应该去买一个C的书回来慢慢看,然后再买一本Linux系统调用的回来读读。
不对,如果你实在是不想读可以看man
A:这个在程序中起到死循环的做用,就是不断的工作。
2。高级信号处理中的sigaction函数我实在看的很困难,请高手指教!
A:The sigaction system call is used to change the action taken by a process on receipt of a specific signal.
signum specifies the signal and can be any valid signal except SIGKILL and SIGSTOP.
If act is non-null, the new action for signal signum is installed from act. If oldact is
non-null, the previous action is saved in oldact.
5。#IF DEFINED(_LINUX_)&&!DEFINED(SI_DERNEL)
#DEFINE SI_KERNEL 0x80
#ENDIF
请问这个语句有什么作用啊?
A:主要是对操作系统的判断。
可以这么理解:
if (defined(_linux_) && !defined (si_dernel))
{
define something;
.....
}
最后一个问题就是,我觉得你应该去买一个C的书回来慢慢看,然后再买一本Linux系统调用的回来读读。
不对,如果你实在是不想读可以看man
|
3。函数名能作函数起始地址返回吗?
可以
4。if(signal(SIGTERM,&terminatehandler)==SIG_ER)
{
printf("Couldn't register signal handler!n");
}
我对这条语句的认识是:该语句完成两个功能,一是调用注册信号处理函数,二是如果出错,则输出出错信息。
你的理解是对的。
可以
4。if(signal(SIGTERM,&terminatehandler)==SIG_ER)
{
printf("Couldn't register signal handler!n");
}
我对这条语句的认识是:该语句完成两个功能,一是调用注册信号处理函数,二是如果出错,则输出出错信息。
你的理解是对的。