/*
* alarm.c
*
* Created on: Apr 13, 2013
* Author: jwang
*/
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
static int alarm_fired = 0;
void ding(int sig) {
alarm_fired = 1;
}
int main(int argc, char **argv) {
pid_t pid;
printf("alarm application starting\n");
pid = fork();
printf("pid : %d\n", pid);
switch (pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
sleep(5);
kill(getppid(), SIGALRM); /* 向父进程发送SIGALRM信号 */
exit(0);
}
printf("waiting for alarm to go off\n");
(void)signal(SIGALRM,ding);
/* 把程序的执行挂起,直到有一个信号出现 */
pause();
if(alarm_fired)
{
printf("Ding!\n");
}
printf("done\n");
exit(0);
}
* alarm.c
*
* Created on: Apr 13, 2013
* Author: jwang
*/
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
static int alarm_fired = 0;
void ding(int sig) {
alarm_fired = 1;
}
int main(int argc, char **argv) {
pid_t pid;
printf("alarm application starting\n");
pid = fork();
printf("pid : %d\n", pid);
switch (pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
sleep(5);
kill(getppid(), SIGALRM); /* 向父进程发送SIGALRM信号 */
exit(0);
}
printf("waiting for alarm to go off\n");
(void)signal(SIGALRM,ding);
/* 把程序的执行挂起,直到有一个信号出现 */
pause();
if(alarm_fired)
{
printf("Ding!\n");
}
printf("done\n");
exit(0);
}
本文介绍了一个简单的C程序,该程序通过父子进程及SIGALRM信号来实现基本的定时任务功能。父进程等待一个来自子进程的信号,该信号在指定时间后触发,并在接收到信号后执行特定的操作。
1568

被折叠的 条评论
为什么被折叠?



