|
68 | 68 |
|
69 | 69 | </head> |
70 | 70 | <body> |
71 | | -<header data-kunai-mdinfo="{"meta": {"header": ["csignal"], "id-type": ["macro"]}, "sources": [{"id": "412070e2b8373fa8f81fce1c077ff536d8a2ddae", "source": "#include <csignal>\n#include <iostream>\n\nvoid signal_handler(int)\n{\n std::cout << \"Custom handler\\n\";\n}\n\nint main()\n{\n // \u4e00\u5ea6\u30ab\u30b9\u30bf\u30e0\u30cf\u30f3\u30c9\u30e9\u3092\u8a2d\u5b9a\n std::signal(SIGINT, signal_handler);\n // \u305d\u306e\u5f8c\u30c7\u30d5\u30a9\u30eb\u30c8\u52d5\u4f5c\u306b\u623b\u3059\n std::signal(SIGINT, SIG_DFL);\n std::cout << \"Press Ctrl+C\\n\";\n // \u3053\u3053\u3067 Ctrl+C \u3092\u62bc\u3059\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u52d5\u4f5c\n while (true) {\n }\n}\n"}], "page_id": ["reference", "csignal", "sig_dfl"]}"> |
| 71 | +<header data-kunai-mdinfo="{"meta": {"header": ["csignal"], "id-type": ["macro"]}, "sources": [{"id": "0ef0e6b5f538e8e72c236fdaceaa557fccaeb213", "source": "#include <csignal>\n#include <iostream>\n\nvolatile std::sig_atomic_t flag = 0;\n\nvoid handler(int)\n{\n flag = 1;\n}\n\nint main()\n{\n std::signal(SIGINT, handler);\n\n std::cout << \"Press Ctrl+C (handled)\" << std::endl;\n while (!flag) {\n }\n\n // \u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059\n std::signal(SIGINT, SIG_DFL);\n\n std::cout << \"Press Ctrl+C again (default action)\" << std::endl;\n while (true) {\n }\n}\n"}], "page_id": ["reference", "csignal", "sig_dfl"]}"> |
72 | 72 | <nav class="navbar navbar-default" role="navigation"> |
73 | 73 | <div class="container-fluid"> |
74 | 74 | <div class="navbar-header"> |
|
188 | 188 |
|
189 | 189 | <p class="text-right"><small> |
190 | 190 | 最終更新日時(UTC): |
191 | | - <span itemprop="datePublished" content="2026-02-26T14:02:56"> |
192 | | - 2026年02月26日 14時02分56秒 |
| 191 | + <span itemprop="datePublished" content="2026-02-27T09:34:57"> |
| 192 | + 2026年02月27日 09時34分57秒 |
193 | 193 | </span> |
194 | 194 | <br/> |
195 | 195 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
@@ -220,38 +220,44 @@ <h2>概要</h2> |
220 | 220 | <p><code>signal</code>関数に渡される引数として、シグナルハンドラをデフォルトに設定するマクロ。</p> |
221 | 221 | <p>シグナル受信時に<code>signal</code>関数で<code>SIG_DFL</code>が指定されている場合、そのシグナルに対する<a class="cpprefjp-defined-word" data-desc="処理系定義の動作。処理系によって事前に定めた動作をする" href="../../implementation-compliance.html#dfn-implementation-defined-behavior">実装定義</a>のデフォルト処理が実行される。</p> |
222 | 222 | <h2>例</h2> |
223 | | -<p><div class="yata" id="412070e2b8373fa8f81fce1c077ff536d8a2ddae"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><csignal></span><span class="cp"></span> |
| 223 | +<p><div class="yata" id="0ef0e6b5f538e8e72c236fdaceaa557fccaeb213"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><csignal></span><span class="cp"></span> |
224 | 224 | <span class="cp">#include</span> <span class="cpf"><a href="../iostream.html"><iostream></a></span><span class="cp"></span> |
225 | 225 |
|
226 | | -<span class="kt">void</span> <span class="nf">signal_handler</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span> |
| 226 | +<span class="k">volatile</span> <span class="n">std</span><span class="o">::</span><span class="kt">sig_atomic_t</span> <span class="n">flag</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> |
| 227 | + |
| 228 | +<span class="kt">void</span> <span class="nf">handler</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span> |
227 | 229 | <span class="p">{</span> |
228 | | - <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"Custom handler</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span> |
| 230 | + <span class="n">flag</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> |
229 | 231 | <span class="p">}</span> |
230 | 232 |
|
231 | 233 | <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> |
232 | 234 | <span class="p">{</span> |
233 | | - <span class="c1">// 一度カスタムハンドラを設定</span> |
234 | | - <span class="n">std</span><span class="o">::</span><span class="n">signal</span><span class="p">(</span><span class="n">SIGINT</span><span class="p">,</span> <span class="n">signal_handler</span><span class="p">);</span> |
235 | | - <span class="c1">// その後デフォルト動作に戻す</span> |
| 235 | + <span class="n">std</span><span class="o">::</span><span class="n">signal</span><span class="p">(</span><span class="n">SIGINT</span><span class="p">,</span> <span class="n">handler</span><span class="p">);</span> |
| 236 | + |
| 237 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"Press Ctrl+C (handled)"</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 238 | + <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">flag</span><span class="p">)</span> <span class="p">{</span> |
| 239 | + <span class="p">}</span> |
| 240 | + |
| 241 | + <span class="c1">// デフォルトに戻す</span> |
236 | 242 | <span class="n">std</span><span class="o">::</span><span class="n">signal</span><span class="p">(</span><span class="n">SIGINT</span><span class="p">,</span> <span class="n">SIG_DFL</span><span class="p">);</span> |
237 | | - <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"Press Ctrl+C</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span> |
238 | | - <span class="c1">// ここで Ctrl+C を押すと、デフォルト動作</span> |
| 243 | + |
| 244 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"Press Ctrl+C again (default action)"</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
239 | 245 | <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span> |
240 | 246 | <span class="p">}</span> |
241 | 247 | <span class="p">}</span> |
242 | 248 | </code></pre></div> |
243 | 249 | </div></p> |
244 | 250 | <ul> |
245 | 251 | <li>SIG_DFL[color ff0000]</li> |
| 252 | +<li>std::signal[color ff0000]</li> |
246 | 253 | </ul> |
247 | 254 | <h3>出力</h3> |
248 | | -<p><pre><code>Press Ctrl+C |
| 255 | +<p><pre><code>Press Ctrl+C (handled) |
| 256 | +Press Ctrl+C again (default action) |
249 | 257 | </code></pre></p> |
250 | 258 | <h2>関連項目</h2> |
251 | 259 | <ul> |
252 | 260 | <li><code><a href="signal.html">signal</a></code></li> |
253 | | -<li><code><a href="sig_ign.html">SIG_IGN</a></code></li> |
254 | | -<li><code><a href="sig_err.html">SIG_ERR</a></code></li> |
255 | 261 | </ul></div> |
256 | 262 |
|
257 | 263 | </div> |
|
0 commit comments