私はSIGUSR1とSIGUSR2(または他の標準シグナル)とは別に独自のカスタム名前付きシグナルを定義したいと思います。 これについてはどうすればよいですか?Linuxカーネルで独自のカスタムシグナルを作成する
-1
A
答えて
1
http://man7.org/linux/man-pages/man7/signal.7.htmlは、real time signals
を定義できますが、定義済みの意味はありません。追加するものはほとんどありません
The range of supported real-time signals
is defined by the macros SIGRTMIN and SIGRTMAX. POSIX.1-2001
requires that an implementation support at least _POSIX_RTSIG_MAX (8)
real-time signals.
The Linux kernel supports a range of 33 different real-time signals,
numbered 32 to 64. However, the glibc POSIX threads implementation
internally uses two (for NPTL) or three (for LinuxThreads) real-time
signals (see pthreads(7)), and adjusts the value of SIGRTMIN suitably
(to 34 or 35). Because the range of available real-time signals
varies according to the glibc threading implementation (and this
variation can occur at run time according to the available kernel and
glibc), and indeed the range of real-time signals varies across UNIX
systems, programs should never refer to real-time signals using hard-
coded numbers, but instead should always refer to real-time signals
using the notation SIGRTMIN+n, and include suitable (run-time) checks
that SIGRTMIN+n does not exceed SIGRTMAX.
:SIGRTMIN+n < SIGRTMAX
SIGRTMIN+n
を使用しています。コンパイル時のチェックを行います(つまり、libc
の実装よりも多くの信号が必要な場合は問題になります)。
何かのようなものがある#define SIGRUBBERDUCK (SIGRTMIN+3)
+0
はい、これは私がやったことです、それは働いた...ありがとう! – RubberDuck
関連する問題
- 1. 独自のLinuxディストリビューションを作成するには?
- 2. 独自のLinuxコンソールアプリケーションを作成するには?
- 3. 独自のsoftirqでlinuxカーネルを呼び出す方法はありますか
- 4. 独自のロギングレベルの独自のログメソッドを作成する方法
- 5. Azure Java独自のVHDを使用してLinux VMを作成
- 6. 独自のパケットモニタを作成
- 7. 独自の.NETアセンブリキャッシュを作成する
- 8. 独自のMD5コリジョンを作成する
- 9. 独自のアサートクラスを作成する
- 10. 独自のエンコーディングを作成する
- 11. 独自のデータ型を作成する
- 12. 独自のインテリセンスを作成する
- 13. 独自のフォームデザイナの作成
- 14. 独自のデータソースの作成
- 15. Codeigniterで独自のbase_url()を作成
- 16. SQLで独自の列プロパティを作成
- 17. 独自のシステムバーを作成します
- 18. 独自のカーネルにOProfileを設定する
- 19. kafka用の独自のカスタムパーティショナーを作成
- 20. 独自のunixコマンドを作成
- 21. 独自の暗号化を作成
- 22. なぜ独自のリクエストオブジェクトを作成するのですか?
- 23. エンティティフレームワークでCodefirstアプローチで独自の/カスタムコントローラを作成する方法
- 24. 独自のタスク構成を作成できますか?
- 25. JSON-LDの独自のカスタムコンテキストの作成
- 26. 独自のフラッシュデバッガの作成方法は?
- 27. 独自のKerasオプティマイザの作成
- 28. TYPO3で独自のフックを作成する
- 29. フルカレンダーで独自のビューを作成する
- 30. アンドロイドで独自のリスナーインターフェースを作成する方法は?
それは本当に難しいです、それは基本的に不可能です。既に32のシグナルがあり、32ビットの 'int'の個々のビットに対応しなければならないように見えます。私が1つ追加したとき、私は既存のものを奪う必要がありました。しかし、私が追加を始めたところでは、それは 'arch/arm/include/asm/signal.h'にありました(私はARMで作業していたので、' arch/x86/... 'かもしれません)。カーネル内部から私は 'internal_kill()'を呼び出して私のシグナルをユーザプロセスに送り出しました。 –
カスタム名でシグナルの1つを再定義しようとしましたが、ユーザーのアプリケーションからシグナルを呼び出すときに信号を認識しません。私はARMで作業しています。 – RubberDuck
一方、カーネルソースディレクトリ内のシグナル名を定義するヘッダファイルは、通常のユーザモードのCファイルがコンパイル時に参照するヘッダファイルとは異なる場合があります。ヘッダーファイルの2つの別々のインスタンスを手動で同期させておく必要があります。 –