我用谷歌搜索了一些人说"要与struct sockaddr保持相同的大小".但内核不会直接使用sockaddr(对吧?).使用时.内核会把它重新归结为它.那么为什么需要零填充?
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct in_addr {
unsigned long s_addr; // load with inet_pton()
};
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚它为何起作用.请解释它背后的理论.谢谢
static const unsigned char BitReverseTable256[256] =
{
# define R2(n) n, n + 2*64, n + 1*64, n + 3*64
# define R4(n) R2(n), R2(n + 2*16), R2(n + 1*16), R2(n + 3*16)
# define R6(n) R4(n), R4(n + 2*4 ), R4(n + 1*4 ), R4(n + 3*4 )
R6(0), R6(2), R6(1), R6(3)
};
Run Code Online (Sandbox Code Playgroud) 我在emacs中使用gdb-many-windows作为普通用户.但该程序需要以root身份运行.我可以在运行gdb-many-windows之前更改为emacs中的root吗?还有其他方法可以解决这个问题吗?
更新:谢谢大家.
下面的简短bash脚本列出了给定目录及其子目录中的所有文件和目录.$1/*脚本中的含义是什么?请给我一些关于它的参考.谢谢
#!/bin/sh
list_alldir(){
for file in $1/*
do
if [ -d $file ]; then
echo $file
list_alldir $file
else
echo $file
fi
done
}
if [ $# -gt 0 ]; then
list_alldir "$1"
else
list_alldir "."
fi
Run Code Online (Sandbox Code Playgroud) 在python模式下,当我forward-word.光标从(Hello_World)跳转H到d.但在另一种模式(shell-mode或c-mode)中,光标从跳转H到_.
我想要在Python模式下获得的结果,即使在其他模式下也是如此.我该怎么办?
PS:之前我看到过类似的问题,我已经搜索过了,但我找不到了.
虚拟内存一:问题[LWN.net] http://lwn.net/Articles/75174/
特别是,硬件的地址转换缓冲区可以在内核和用户空间之间共享。
我对此完全困惑。为什么虚拟机分裂时他们可以共享TLB?我知道某些CPU中有页面全局位
表明 TLB 条目对于不同进程是通用的,不需要刷新。
TLB和vm split 3G/1G有什么关系?请详细评论。提前致谢。
更新:为什么不使用页面全局位来指示TLB条目被操作系统(内核空间)使用?如果是这样,为什么还需要分割vm空间?示例:TLB 中有两个条目(vm 线性地址相同),但其中一个全局位已设置。?当上下文切换时,只需刷新未设置全局位的条目。这可能吗?
Update2:我检查了intel-ia-32架构软件开发人员手册,发现TLB条目中没有全局位(存在于PDE和PTE中)。但是当上下文切换时,CPU如何确定TLB条目全局位是否设置或未设置?
为什么他们这样设计?我很迷茫.
更新:我真的想知道问题的答案.我用Google搜索,但我找不到任何有用的东西.
我想可能有两个原因:
一:技术.也许编译器很难实现(struct by reference).如果答案是这个.请解释一下.
二:适合使用(编程).我认为,如果struct通过引用传递,它会更优雅(或更漂亮?)我找不到一些显示优势的例子(strut pass by value).我的编程生涯不是很长.在实践中,我更喜欢将struct作为指针传递给函数(指针占用堆栈上较少的空间).
下面的代码在常见的lisp中工作,但在emacs lisp中,它会抱怨"(错误"方法参数中的未知类类型orc")".为什么以及如何在emacs lisp中修复它?谢谢.
(defun randval (n)
(1+ (random (max 1 n))))
(defstruct monster (health (randval 10)))
(defstruct (orc (:include monster)) (club-level (randval 8)))
(defmethod monster-show ((m orc))
(princ "A wicked orc with a level ")
(princ (orc-club-level m))
(princ " club"))
Run Code Online (Sandbox Code Playgroud) 我知道我可以打开一个新的框架M+xgdb.但只是在新框架M+xgdb中gdb执行和执行会好得多.
gdb-many-windows当我运行它时销毁原始窗口布局,当我杀死它时它无法恢复布局.所以我想在一个新的框架中运行它并关闭那个框架.
更新:我用(setq gdb-many-windows t).如果我调用gdb它,它会gdb-many-windows自动使用布局.
如何让Emacs中的光标像心跳一样闪烁.就像计算机暂停时笔记本电脑前面板上的LED一样.
有一个变量blink-cursor-alist控制光标的闪烁,但我不知道如何使用它来满足我的要求.
可能吗?