擅长:python、mysql、java
<p><code>'keys'</code>是一个整数字符常量(包含四个字符),其值由实现定义。您声明了C代码<code>_IOR('keys', 1, unsigned char *)</code>返回的值是-444763391,它是一个4字节的十六进制数0xE57D7301。由此我们可以得出这样的结论:此实现从<code>'k'<<24|'e'<<16|'y'<<8|'s'</code>计算<code>'keys'</code>的整数值0x6B657973。<code>_IOR</code>值0xE57D7301来自表达式</p>
<pre><code>2<<30|4<<16|'keys'<<8|1
: : : :
: : : 1 = num n
: : 'keys' = group g
: 4 = sizeof (unsigned char *)
2 = _IOC_READ
</code></pre>
<p>-注意,一个类型(组)值只保留了8位,这种对32位值的创造性使用使类型溢出到大小和DIR位(与它们一起使用“或”运算),其最重要的字节(由<code>'k'<<24</code>产生)甚至被移出<code>int</code>值。在</p>
<p>使用Python函数,可以通过调用</p>
^{pr2}$
<p>(由于<code>k</code>丢失,我们可以直接丢弃它)。在</p>