- 论坛徽章:
- 0
|
APUE第二版 10.18第一个示例程序
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <errno.h>
static void sig_int(int signo);
static void sig_chld(int signo);
int main()
{
if(signal(SIGINT,sig_int) == SIG_ERR)
{
perror("signal SIGINT");
exit(1);
}
if(signal(SIGCHLD,sig_chld) == SIG_ERR)
{
perror("signal SIGCHLD");
exit(1);
}
system("/bin/ed");
exit(0);
}
static void sig_int(int signo)
{
printf("Caught SIGINT");
}
static void sig_chld(int signo)
{
printf("Caught SIGCHLD");
}
|
按照书上所说的,程序运行,进入system调用的ed后,按Ctrl+C,编译后的a.out、system所fork的sh,sh所fork的ed都会收到SIGINT,所以屏幕会显示
"Caught SIGINT",但是我运行程序的结果却不是这样,按Ctrl+C,没有任何显示。难道我哪里搞错了? |
|