2011年12月20日火曜日

システムプログラミング:シグナル利用

Ctr+Z(SIGTSTP)を押したら経過時間を表示するプログラム


#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
time_t start;
int main(){
  void stop ();
  time (&start);
  // SIGTSTPが発生したら関数stopを実行
  signal (SIGTSTP, stop);
  while (1){
  sleep (1);
  printf (“ . “);
  fflush (stdout);
  }
  return EXIT_FAILURE;
}

void stop (){
  time_t end;
  time (&end);
  printf (“\n”);
  printf (“elapsed time= %ld seconds\n”, end-start);
  exit (EXIT_SUCCESS);
}

atmark@atde3:~/Desktop/work$ ./timer
 .  .  .  .  .  .  .  .  .  . ^Z\nelapsed time= 10 seconds

0 件のコメント:

コメントを投稿