C言語のプログラミングについて
”プログラム開始から3秒以内に数字を入力したらその数字を出力、3秒経過したらタイムアウトする”というプログラムを友人につくってもらったのですが
いまいちプログラムの流れやひとつひとつどんな処理しているのかがわかりません
どなたかわかりやすく解説してくれるとうれしいです、以下ソース
include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<signal.h>
#include<time.h>
#include<sys/time.h>
int mygetchar(int timeout);
int main()
{
int c;
c = mygetchar(3); // maygetchar(秒数)
if(c)printf("入力された数字は %d\n",c);
return 0;
}
int mygetchar(int timeout)
{
int imput;
struct sigaction sa;
struct itimerval itimer;
void mywait(int no) { printf("\n\nタイムアウトしました\n\n\n"); }//タイムアウトしたときのメッセージ
// シグナルハンドラの設定
memset(&sa,0,sizeof(struct sigaction));
sa.sa_handler = mywait;
//sa.sa_flags = SA_RESTART;
if(sigaction(SIGALRM,&sa,NULL) != 0){
perror("sigaction");
return 0;
}
// タイマーの設定
itimer.it_value.tv_sec = itimer.it_interval.tv_sec = timeout; // sec
itimer.it_value.tv_usec = itimer.it_interval.tv_usec = 0; // micro sec
if(setitimer(ITIMER_REAL,&itimer,NULL) < 0) {
perror("setitimer");
return 0;
}
// 1文字入力
scanf("%d",&imput);//ここの処理が時間内に終わればタイムアウトせずに処理を続行
return imput;
}
タイムアウトについて、ソースの解説お願いしたいです
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: タイムアウトについて、ソースの解説お願いしたいです
フォーラムルールにあります通りマルチポストになりますので、相互リンクをお願いします。
http://dixq.net/board/board.html
マナー違反を防ぎ、質問者と回答者が快適に利用してもらうためのルールです。
「C言語のプログラミングについて ”プログラム開始から3秒以内に数字を入力したら... - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 3113858378
【補足】
他にも投稿してましたら、全てに相互リンクをお願いします。
あとcodeタグをご利用下さい。
http://dixq.net/board/board.html#k10
http://dixq.net/board/board.html
マナー違反を防ぎ、質問者と回答者が快適に利用してもらうためのルールです。
「C言語のプログラミングについて ”プログラム開始から3秒以内に数字を入力したら... - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 3113858378
【補足】
他にも投稿してましたら、全てに相互リンクをお願いします。
あとcodeタグをご利用下さい。
http://dixq.net/board/board.html#k10
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。