
A 回答 (5件)
- 最新から表示
- 回答順に表示

No.5
- 回答日時:
以下のURLは、直接関係ないですけど、なかなかおもしろいですよ^^
http://d.hatena.ne.jp/yupo5656/archive
執筆に参加したという『Binary Hacks ― ハッカー秘伝のテクニック100選』もまずまずでした^^
No.4
- 回答日時:
まず、C言語の標準規格では、signalおよびraise関数が規定されています。
すなわち、言語仕様の中にシグナルが含まれています。ただし、言語そのものではなく、ライブラリとして実現しています。標準規格で規定されているシグナルのうち、非同期で発生する可能性があるのはSIGINTだけですが、これもどんな風に実装されるかは処理系定義ですし、raise関数を用いてのみ発生させることができる仕様であったとしても規格の要件は満たしています。
そして、これら標準ライブラリの実現方法は、OSの機能を使ってもよいですし、使わなくても構いません。
シグナルというものは、ある事象が発生したときに、単に特定の関数を呼び出すだけです。raiseまたはabortの結果としてシグナルハンドラが呼び出された場合を除き、longjmpで脱出することも、exitやabortで終了することもできません。もちろん、シグナルハンドラの中から例外を送出することもできません。
一方、C++の例外は完全に同期的に発生します。そして、関数の枠組みを超えて、呼出し元の関数へ制御を移します。その際、途中に存在する自動オブジェクトは自動的に解体されます。
例外は特定の関数を呼び出すだけではありませんので、例外ハンドラの中でできることはかなり自由度が高くなっています。
No.3
- 回答日時:
C言語のシグナルはOSの機能であって言語の機能ではありません。
OSの機能をライブラリを通じて使用しているだけです。従って、LinuxとWindowsでは、まったく機能や使い方が違ってきます。というか、Windowsに同じ意味のシグナルはありません。それとC++の例外try~catchは、一般保護例外などの言語管理外の異常はキャッチしてくれません。言語仕様内の例外、newの失敗などを拾ってくれるだけです。でもシグナルなら一般保護例外を拾ってくれます。これはOSの機能だからです。

No.2
- 回答日時:
あぁ、それから、シグナルは、他のプロセスから該当プロセスにシグナルを送ることができますが(raise()などで、自分でも送れますけど^^)、例外はたぶん標準的な方法では無理でしょう。
あと、シグナルはハンドラで処理した後、シグナルを受け取った処理ポイントに戻りますが(システムコール中にシグナルを受けた場合や、非アトミック的な操作中にシグナルを受けた場合など、いろいろと複雑ですが)、例外は例外ハンドラで処理しても例外を投げたところのポイントへは戻りません。シグナルはできれば使わないほうがいいです。使うならきちんとした書籍を読んで理解して、処理系・環境依存の動作などを確認して使うのがいいと思います。

No.1
- 回答日時:
シグナルは非同期的ですが、例外は同期的です。
C++が言語的にサポートしてるのは例外で、スタックの巻き戻し時にローカル変数のデストラクタが起動されることになってます。例外処理で間に合うのなら、シグナルは使わないほうがいいと思います。ちなみに、C言語のライブラリには、C++の例外処理と似たようなものに、longjmp() がありますけど、こちらは、スタックの巻き戻しのみを行うものだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(悩み相談・人生相談) シグナル フォー ヘルプ っていうハンドサイン あるじゃないですか、( ´ᐞ` ) このハンドサイン 1 2022/05/30 19:47
- SEO Googleアナリティクスでの設定について 1 2023/07/12 09:07
- FX・外国為替取引 ダウ理論の転換に関するインジケーター 1 2022/11/05 06:35
- 債券・証券 金融緩和による純負債への影響について 1 2023/03/12 14:01
- 生物学 大至急お願いします。 レポート課題について質問です。参考程度にしたいです。 1. 遺伝子という言葉の 4 2023/01/20 14:55
- その他(教育・科学・学問) ある人が話終えてから、相手が話し始めるまでにかかる時間(応答時間)が0.25秒以下だと仲が良いという 2 2022/10/20 09:43
- 日本語 日本人の大半は英語が難しい言語だと感じるそうですが 8 2023/04/14 18:16
- カップル・彼氏・彼女 デートDVかわからない 6 2023/06/06 16:11
- 医学 「共刺激シグナルがないとT細胞は( )になってしまう。」この穴埋めを教えて下さい! 4 2022/06/20 15:11
- 環境学・エコロジー 地球の限界が目に見えるようなサイン(シグナル)は身近でいうとどこで感じますか?? 2 2022/04/25 20:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語、C+、C++、C#の違い
-
プログラムに書かれる"%"記号の...
-
VCとVC++
-
順列の内容をすべて表示するプ...
-
C++は何に適している?
-
一般的な市販PCゲーム(美少...
-
FAの設計の仕事について
-
階乗の記号 ^
-
PL/Iソースからのコメント部分削除
-
任天堂で使うプログラミング言...
-
会計システムをつくるために必...
-
プログラムははぜ小文字大文字...
-
プログラミング言語「C#」の難...
-
【Cか】ノベルゲーム【Jav...
-
全くの初心者がはじめるプログ...
-
HTMLは、プログラミング言語じ...
-
プログラミング言語について
-
プログラムの設計方法を学ぶには
-
計算速度の速いC言語を教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLで文字タイプを数字...
-
UNITY Float型の接尾辞fって
-
HTMLとC++で、どんなホームペー...
-
Excel VBAで文字化けする (英語...
-
C++における継続行
-
TO_CHARで小数点以下がある場合...
-
VBScriptで引数を省略したい場合
-
VCとVC++
-
UWSCはどのプログラミング言語?
-
vbaとc言語の関連性について
-
パスカルケースの由来。
-
任天堂で使うプログラミング言...
-
Excelの開発言語ってなんですか?
-
C++ ってなんて読む?
-
VBSでDim、Private、Publicの違い
おすすめ情報