タイムアウトについて、ソースの解説お願いしたいです

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ageha22
記事: 1
登録日時: 13年前

タイムアウトについて、ソースの解説お願いしたいです

#1

投稿記事 by ageha22 » 12年前

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: タイムアウトについて、ソースの解説お願いしたいです

#2

投稿記事 by softya(ソフト屋) » 12年前

フォーラムルールにあります通りマルチポストになりますので、相互リンクをお願いします。
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(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る