GNU/Linux >> Linux の 問題 >  >> Linux

#define X X とはどういう意味ですか?

これにより、EPOLLIN という名前のマクロが作成されます その置換テキストも EPOLLIN です .

これは、プリプロセッサが使用可能なイベント コードを確認し、必要に応じてコードを条件付きでコンパイルするための方法です。 glibc の git リポジトリに移動して git blame の出力を確認すると、 enum EPOLL_EVENTS については次のようになります。 :

ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  34) enum EPOLL_EVENTS
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  35)   { 
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  36)     EPOLLIN = 0x001,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  37) #define EPOLLIN EPOLLIN
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  38)     EPOLLPRI = 0x002,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  39) #define EPOLLPRI EPOLLPRI
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  40)     EPOLLOUT = 0x004,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  41) #define EPOLLOUT EPOLLOUT
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  42)     EPOLLRDNORM = 0x040,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  43) #define EPOLLRDNORM EPOLLRDNORM
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  44)     EPOLLRDBAND = 0x080,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  45) #define EPOLLRDBAND EPOLLRDBAND
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  46)     EPOLLWRNORM = 0x100,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  47) #define EPOLLWRNORM EPOLLWRNORM
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  48)     EPOLLWRBAND = 0x200,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  49) #define EPOLLWRBAND EPOLLWRBAND
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  50)     EPOLLMSG = 0x400,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  51) #define EPOLLMSG EPOLLMSG
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  52)     EPOLLERR = 0x008,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  53) #define EPOLLERR EPOLLERR
5e826ab5 (Ulrich Drepper 2003-03-25 01:14:36 +0000  54)     EPOLLHUP = 0x010,
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  55) #define EPOLLHUP EPOLLHUP
94833f11 (Ulrich Drepper 2007-10-28 01:34:10 +0000  56)     EPOLLRDHUP = 0x2000,
94833f11 (Ulrich Drepper 2007-10-28 01:34:10 +0000  57) #define EPOLLRDHUP EPOLLRDHUP
981569c7 (Joseph Myers   2016-03-14 19:04:53 +0000  58)     EPOLLEXCLUSIVE = 1u << 28,
981569c7 (Joseph Myers   2016-03-14 19:04:53 +0000  59) #define EPOLLEXCLUSIVE EPOLLEXCLUSIVE
f8d44fdc (Andreas Jaeger 2012-07-26 13:11:33 +0200  60)     EPOLLWAKEUP = 1u << 29,
f8d44fdc (Andreas Jaeger 2012-07-26 13:11:33 +0200  61) #define EPOLLWAKEUP EPOLLWAKEUP
4920765e (Ulrich Drepper 2011-12-21 22:14:05 -0500  62)     EPOLLONESHOT = 1u << 30,
e11676dd (Ulrich Drepper 2004-01-21 06:23:26 +0000  63) #define EPOLLONESHOT EPOLLONESHOT
4920765e (Ulrich Drepper 2011-12-21 22:14:05 -0500  64)     EPOLLET = 1u << 31
5e826ab5 (Ulrich Drepper 2003-03-25 01:14:36 +0000  65) #define EPOLLET EPOLLET
ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000  66)   };

ここから、これらのイベントのほとんどが 2002 年に作成されたものであることがわかりますが、他の多くのイベントは後で追加されました。したがって、これらのマクロを使用すると、次のように特定のフラグが使用可能かどうかを確認できます:

#ifdef EPOLLEXCLUSIVE 
/* code that can handle EPOLLEXCLUSIVE */
#else
/* code that uses an alternate event */
#endif

このようにして、新しいイベントが利用可能な新しい Linux バージョンでも、利用できない古いバージョンでもコードを実行できます。


#define EPOLLIN EPOLLIN

これは、プリプロセッサ マクロ EPOLLIN を定義します。 EPOLLIN になる .

おそらく、後の #ifdef EPOLLIN の目的で定義されています。 チェックします。


Linux
  1. `:-`はシェルスクリプトで何を意味しますか?

  2. Psの出力にはどういう意味がありますか?

  3. `chown Root.root $ file`はどういう意味ですか?

  1. 「rmIsHashed」とはどういう意味ですか?

  2. この Linux コマンドの - はどういう意味ですか?

  3. bashスクリプトで set -e とはどういう意味ですか?

  1. [[ $? -ne 0 ]]; .ksh の意味

  2. 非自発的なコンテキスト切り替えが多いとはどういう意味ですか?

  3. grep パターンで \b はどういう意味ですか?