小编lou*_*xiu的帖子

为什么sockaddr_in需要零填充?

我用谷歌搜索了一些人说"要与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)

c linux kernel

13
推荐指数
1
解决办法
8395
查看次数

生成反向位查找表(8位)背后的算法

我在这里找到了查找表.该表生成为8位的反向位表.

我无法弄清楚它为何起作用.请解释它背后的理论.谢谢

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)

c algorithm bit-manipulation lookup-tables c-preprocessor

10
推荐指数
1
解决办法
2433
查看次数

gdb需要以root身份运行.emacs gdb-many-windows

我在emacs中使用gdb-many-windows作为普通用户.但该程序需要以root身份运行.我可以在运行gdb-many-windows之前更改为emacs中的root吗?还有其他方法可以解决这个问题吗?

更新:谢谢大家.

emacs gdb

9
推荐指数
1
解决办法
2597
查看次数

"$ 1/*"在"for file in $ 1/*"中的含义是什么

下面的简短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)

linux bash shell

6
推荐指数
1
解决办法
4万
查看次数

Hello_World is a word in Python, it is different in an other mode. How I change it?

在python模式下,当我forward-word.光标从(Hello_World)跳转Hd.但在另一种模式(shell-modec-mode)中,光标从跳转H_.

我想要在Python模式下获得的结果,即使在其他模式下也是如此.我该怎么办?

PS:之前我看到过类似的问题,我已经搜索过了,但我找不到了.

python emacs

6
推荐指数
1
解决办法
191
查看次数

3G/1G 虚拟机拆分有什么优势?32位Linux内核

虚拟内存一:问题[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条目全局位是否设置或未设置?

linux memory-management linux-kernel

5
推荐指数
1
解决办法
4420
查看次数

为什么数组通过引用传递,但struct在C中隐式传递值?

为什么他们这样设计?我很迷茫.

更新:我真的想知道问题的答案.我用Google搜索,但我找不到任何有用的东西.

我想可能有两个原因:

:技术.也许编译器很难实现(struct by reference).如果答案是这个.请解释一下.

:适合使用(编程).我认为,如果struct通过引用传递,它会更优雅(或更漂亮?)我找不到一些显示优势的例子(strut pass by value).我的编程生涯不是很长.在实践中,我更喜欢将struct作为指针传递给函数(指针占用堆栈上较少的空间).

c linux objective-c

5
推荐指数
1
解决办法
2139
查看次数

常见的lisp和emacs lisp之间的结构差异

下面的代码在常见的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)

lisp emacs elisp

5
推荐指数
1
解决办法
568
查看次数

如何在新框架中运行gdb-many-windows?

我知道我可以打开一个新的框架M+xgdb.但只是在新框架M+xgdbgdb执行和执行会好得多.

gdb-many-windows当我运行它时销毁原始窗口布局,当我杀死它时它无法恢复布局.所以我想在一个新的框架中运行它并关闭那个框架.

更新:我用(setq gdb-many-windows t).如果我调用gdb它,它会gdb-many-windows自动使用布局.

emacs gdb

5
推荐指数
1
解决办法
877
查看次数

期待一种让光标像Emacs中的心跳一样闪烁的方法

如何让Emacs中的光标像心跳一样闪烁.就像计算机暂停时笔记本电脑前面板上的LED一样.

有一个变量blink-cursor-alist控制光标的闪烁,但我不知道如何使用它来满足我的要求.

可能吗?

emacs elisp

5
推荐指数
2
解决办法
1246
查看次数