|
#include <stdio.h>
#include <signal.h>
#include <stdarg.h>
void terminatehandler(int signumber)
int main(void)
{
char buffer1[100],buffer2[100];
int i;
if((signal(SIGTERM,&terminatehandler))==SIG_ER)
{
printf("couldn't register signal handler \n");
}
printf("pid of this process:%6d",getpid());
for( ; ; )
{
fgets(buffer1, sizeof(buffer1), stdin);
for(i=0; i<100; i++)
{
if(buffer1[ i ]>=97&&buffer1[ i ]<=122)
buffer2[ i ]=buffer1[ i ]-32;
else
buffer2[ i ]=buffer1[ i ];
printf("Your input is: %s\n\n", buffer2);
}
}
return 0;
}
void terminatehandler(int signumber)
{
printf("catch signal SUGTERM .\n");
exit(0);
}
这是书上的一段程序,有好几处看不懂,请各位大哥帮帮我
问题1:
signal(SIGTERM,&terminatehandler)
这句话是什么意思?
有什么作用?
问题2:
void terminatehandler(int signumber)
{
printf("catch signal SUGTERM .\n");
exit(0);
}
是说明 terminatehandler 带了个 int 类型参数的
可是
signal(SIGTERM,&terminatehandler)
没有参数啊
这是为什么呢?
问题3:
signal(SIGTERM,&terminatehandler)
中的 &terminatehandler 是什么意思?
有什么作用?
问题4:
从
void terminatehandler(int signumber)
{
printf("catch signal SUGTERM .\n");
exit(0);
}
来看 这个函数根本没有起什么作用,
只是输出 catch signal SUGTERM
那个 exit(0) 对在整个程序有影响吗?
谢谢各位大哥! |
|