- 論壇徽章:
- 0
|
void fn(int signal)
{
printf("caught \n");
}
void main()
{//注冊信號處理器
struct sigaction sg;
sg.sa_handler = fn;
sigaction(SIGBUS, &sg, NULL);
////////////////////////////////////////////////
int fd;
fd = open("./temp.file, O_RDWR);
char *addr;
struct stat buf;
stat("./temp.file" ,&buf);//temp.file這個文件大小是100字節(jié)
addr = mmap(0, buf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
sleep(5); //在這五秒中的時間里 刪除temp.file 或者用其他程序截短這個文件到20字節(jié)
addr += 50;
*addr = 'x';
}
這個程序運行完后 沒有捕捉到SIGBUS信號 為什么?
|
|