//シグナルハンドラ。//シグナルハンドラ。0;}getpid()でプロセスIDを標準出力しています。killコマンドでプロセスIDを指定しやすいようにするためです。割り込みプログラムを終了させていきます。Cを押してもプログラムは終了しました。押しても、プログラムは終了しません。スポンサーリンク非同期シグナルセーフ関数とsig_atomic_t型変数シグナルハンドラの中身を書くときは注意が必要です。それが非同期シグナルセーフ関数とvolatile修飾したsig_atomic_t型変数です。非同期シグナルセーフ関数は、ある種の関数グループです。シグナルハンドラ割り込み処理で安全に扱えるのは、これに該当する関数のみです。非同期シグナルセーフ関数でない関数を用いると予期せぬエラーのメモリ破壊などの原因になってしまいます。以下に示す関数が該当します。_Exit()_exit()abort()accept()access()aio_error()aio_return()aio_suspend()alarm()bind()cfgetispeed()cfgetospeed()cfsetispeed()cfsetospeed()chdir()chmod()chown()clock_gettime()close()connect()creat()dup()dup2()execle()execve()fchmod()fchown()fcntl()fdatasync()fork()fpathconf()fstat()fsync()ftruncate()getegid()geteuid()getgid()getgroups()getpeername()getpgrp()getpid()getppid()getsockname()getsockopt()getuid()kill()link()listen()lseek()lstat()mkdir()mkfifo()open()pathconf()pause()pipe()poll()posix_trace_event()pselect()raise()read()readlink()recv()recvfrom()recvmsg()rename()rmdir()select()sem_post()send()sendmsg()sendto()setgid()setpgid()setsid()setsockopt()setuid()shutdown()sigaction()sigaddset()sigdelset()sigemptyset()sigfillset()sigismember()sleep()signal()sigpause()sigpending()sigprocmask()sigqueue()sigset()sigsuspend()sockatmark()socket()socketpair()stat()symlink()sysconf()tcdrain()tcflow()tcflush()tcgetattr()tcgetpgrp()tcsendbreak()tcsetattr()tcsetpgrp()time()timer_getoverrun()timer_gettime()timer_settime()times()umask()uname()unlink()utime()wait()waitpid()write()ちなみに最も良く使うであろうprintf関数は入っておりません。シグナルハンドラ内での使用は控えた方が良いです。最後にsig_atomic_t型変数です。普通の変数を使用するよりこちらの変数を使用した方が安全です。他から割り込みをされないことを保証ということを意味しています。この変数にvolatile修飾子を付けましょう。volatile修飾子というのは、よく組み込み系で使われるそうです。変数へのアクセス最適化をあえて無効化します。プログラム上で変数を何回も呼び出していても実際はメモリから呼び出されていません。レジスタに留めておいたものを使います。最適化してある場合は変数を使いまわしています。volatile修飾子はこの最適化を意図的に無効するものです。上記の非同期シグナルセーフ関数とsig_atomic型変数について"なぜ"ということについてあまり言及しませんでした。良ければ参考にしてみて下さい。非同期シグナルセーフ関数についてhttps://www.jpcert.or.jp/sc-rules/c-sig30-c.htmlsig_atomic型変数についてhttps://www.jpcert.or.jp/sc-rules/c-sig31-c.html最後まで読んでいただきありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。pingを受信し中身を表示してみたパケットキャプチャを作る際のテスト用として、pingの受信結果を簡単に表示するものです。実感できるかと思います。いくつ作成できるか検証してみます。実際に確認してみましょう。このようになってしまいます。一度まとめておこうと思います。以下が思いつくかと思います。全て"stdio.h"に定義されています。...PREV【C++】サーバにマルチスレッドを実装し、マルチクライアントに対応してみたNEXTCでデーモンの実装してみた!デーモン周りのまとめ!プロフィール某名門大の大学院生です。IoT、人口知能、ネットワークインフラ系まで幅広く興味があります。いう方のために簡単にまとめてみました。IPv6を取得して標準出力させてみます。自分の目で調査したのでまとめます。変更までする方法をご紹介します。ioctlシステムコールを使います。フラグを引数に指定します。一度まとめておこうと思います。以下が思いつくかと思います。全て"stdio.h"に定義されています。