C言語でCTRL+C


ドラマ『貴族探偵』

ホーム先頭で帰宅電車を待って、車両のドアが開いたと同時に空席を見つけて座ろうと思っていたら、居眠りから慌てて起きた降車客と正面鉢合わせ、その間に後ろのおじさんに抜かされ、結局座れませんでした。
ホーム先頭に並ぶため次に来る電車に乗ったというのに!
私を抜かしたおじさんがうらめしいです! かばんがなければ、席を奪ったおじさんの前で、両手で吊り革に掴まってやりたい気分です。
こんな時、自分が貴族だったらなあと思います。貴族ならお年寄りの優先席のように、貴族専用シート、いや専用車両でいつでも座れます。
貴族専用車両では、当然のように、椅子はひとつだけです。両手で掴まれてしまう物騒なつり革の代わりにシャンデリアが輝いています。敷き詰められたふかふか金糸刺繍の赤絨毯はずぶ濡れ土足でもOKです。毎回取り替えです。目の前にあるのにかかわらず、マカロンのツリーには手は伸ばしません。使用人がシャンパンと一緒に運んでくれますから。ああ、お風呂もあればいいですねえ。浴槽は当然純金でできています。お風呂から出たら、使用人たちが一斉に「お疲れ様でした」とねぎらってくれます。
そんな想像をしつつ、私の座席を奪ったおじさんの顔を、ちらちら見過ぎてしまったため、乗り物酔いしました。

さて。

ドラマ一話目面白かったです。貴族自身は推理をしない感じいいですねえ。女探偵と鼻、貴族、使用人たちのテンポのいいコメディが楽しかったです。一話目に「鬼隠しの井戸」ってのが登場して、Blenderで井戸を描きたいなあと思ってはいたのですが、帰宅電車でのおじさんの割り込みにあんまり怒れてきたので、割り込みに関することに変更してしまいました。井戸はそのうち描くと思います。
割り込みということで、今回はCTRL+Cです。

CTRL+Cは、ほとんどどんな時でも中断できる貴族のティータイムのようなコマンドですが、C言語でCTRL+Cのハンドラ処理をするプログラムを書いてみます。

takk@deb8:~$ cat -n signal.c
     1	#include <stdio.h>
     2	#include <signal.h>
     3	#include <stdlib.h>
     4	
     5	void my_handler()
     6	{
     7		printf("SIGINT!\n");
     8	}
     9	
    10	int main()
    11	{
    12		signal(SIGINT, my_handler);
    13		puts("Press Ctrl+C or wait 10sec.");
    14		sleep(10);
    15	}

SIGINTとハンドラを指定して、signal関数を呼べばいいだけです。
実行してみましょう。

takk@deb8:~$ gcc signal.c
takk@deb8:~$ ./a.out
Press Ctrl+C or wait 10sec.
^CSIGINT!
takk@deb8:~$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA