天天看點

linux c 模拟鬧鐘程式

#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);

        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);

}