小编yve*_*mes的帖子

Lisp文件扩展名的约定是什么?

".el"是以Emacs Lisp程序结尾的文件名的约定.编写Common Lisp程序时的惯例是什么?

lisp filenames common-lisp pathname

34
推荐指数
2
解决办法
2万
查看次数

24
推荐指数
4
解决办法
2万
查看次数

-1和~0之间有区别吗?

比较无符号值时,如此测试:

if (pos == (size_t)-1)
Run Code Online (Sandbox Code Playgroud)

这种比较在技术上是否与以下类似:

if (pos == (size_t)~0)
Run Code Online (Sandbox Code Playgroud)

我不习惯第二种变体.这就是我问这个问题的原因.如果是的话,答案可能会相当直截了当.

c c++

18
推荐指数
2
解决办法
2082
查看次数

如何在gdb堆栈跟踪充满'??'时调试分段错误?

我的可执行文件包含符号表 但似乎堆栈跟踪已被覆盖.

如何从该核心获取更多信息?例如,有没有办法检查堆?查看填充堆的对象实例以获取一些线索.无论如何,任何想法都值得赞赏.

c++ linux coredump

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

有没有办法知道哪个编译器生成了静态库?

第三方为我提供了一个静态库(.a)来链接solaris站.我试图用sunpro编译,但在链接步骤失败了.

我想问题来自我使用的编译器(gcc代替?)或仅仅是它的版本(因为编译器提供的std lib可能会从库AFAIK预期的版本改变,它可能导致链接步骤出错).

我怎么知道用哪个编译器来生成这个lib?有没有一些工具呢?sunpro/gcc或其他什么选项?

作为提示:我前段时间读过编译器在生成目标文件时使用不同的修改约定(是吗?).仍然,"nm --demangle"命令行打印出来自此静态库中调试符号的所有函数名称.它是如何工作的 ?如果我的假设没问题,nm确实有办法解决静态库中正在使用的约定,不是吗?或者它只是意味着lib是由GNU gcc生成的,因为nm是GNU binutils的一部分?

我不接近我的工作站,所以我不能从链接器复制和粘贴错误输出(暂时不能,但我可以在进一步编辑中复制它们)

linker build-process solaris

9
推荐指数
2
解决办法
6743
查看次数

我怎样才能重构Clojure源代码?

做4个实践练习,一个目标是提供正确的答案,并且可选的目标是尽可能提供最短的解决方案(空间不计入),也就是代码高尔夫.然后,您可以与其他解决方案进行比较.

在做运动时,我首先找到一个正确的答案.然后我对我的源代码应用手动 重构,其中包括将变量名称重命名为单个字符.例如,在应用此基本步骤后,我的代码可能如下所示.

(fn f[s]
   (if (empty? s)
     {}
     (let [[k & r] s
        [v n] (split-with number? r)]
        (assoc (f n) k v))))
Run Code Online (Sandbox Code Playgroud)

人类相当难以理解,但在4Clojure代码高尔夫比赛中得分更高,因为它可以节省很多角色.

为了好奇,你会如何在emacs中自动执行此操作?clojure.core中有重构函数可以帮助吗?我没找到任何.

emacs refactoring elisp clojure

8
推荐指数
2
解决办法
1114
查看次数

调用clock_gettime()时,返回的tv_nsec字段实际上可能超过一秒?

当您调用clock_gettime()它时,返回timespec结构.

struct timespec {
    time_t tv_sec; /* seconds */
    long tv_nsec; /* nanoseconds */
};
Run Code Online (Sandbox Code Playgroud)

我没有在手册页中找到tv_nsec不会超过一秒的保证.实际存在保证吗?它可能依赖于linux的库(glibc?)实现吗?

关键的想法是:我是否需要"规范化"来自clock_gettime()函数的任何结果?

c linux glibc libc

8
推荐指数
1
解决办法
951
查看次数

如何在Mac OS X上找到Unix域套接字的另一个点来编写/读取它?

我在运行Mac OS X 10.5的盒子上列出了一个进程(一个守护进程)的打开文件:

>lsof  -p 89
COMMAND PID     USER   FD   TYPE    DEVICE  SIZE/OFF     NODE NAME
...
xxxxx   89 xxxxxxxx    9u  unix 0x34f8990       0t0          ->0x34f8880
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法来打开这个套接字并写入它.(这次是我的痴迷......)

如何找到底层文件的索引节点/名称以便到达该套接字?有没有办法从shell脚本以编程方式解决此地址0x34f888 ?如果不是这样,如何以编程方式进行?

作为评论,我已经启动了netstat命令并得到了这个结果:

> netstat -u
Active LOCAL (UNIX) domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
...
 34f8990 stream      0      0        0  34f8880        0        0
...
 34f8880 stream      0      0        0  34f8990        0        0
...
Run Code Online (Sandbox Code Playgroud)

我不是网络/套接字大师.希望这可以提供更多信息

sockets macos networking netstat lsof

7
推荐指数
0
解决办法
1715
查看次数

为什么EventMachine出站数据缓冲区可能会停止发送并且只是永远填满(而其他连接仍然可以发送)

我有一个EventMachine服务器将TCP数据发送到Mac客户端(通过GCDAsyncSocket).它总是完美无缺地工作一段时间,但服务器不可避免地突然停止逐个连接地发送数据.仍然保持连接,并且服务器仍然从客户端接收数据,但它不会采用其他方式.

当发生这种情况时,我通过连接#get_outbound_data_size发现连接发送缓冲区无限填充(通过#send_data)而不是发送到客户端.

是否存在可能发生这种情况的具体(并且有希望解决)原因?反应堆保持嗡嗡声,与服务器的其他活动连接继续正常工作(尽管它们有时也会陷入缓冲区地狱).

cocoa tcp eventmachine cocoaasyncsocket gcdasyncsocket

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

如何说服我的同事linux内核代码是重入的?

是的,我知道......有些人有时很难说服我们其他人听起来自然是什么,我现在需要你的帮助SO社区(或者我很快就会去邮政...)

我的一位同事确信L​​inux内核代码不是可重入的,因为他上次在7年前对它感兴趣时就读到了它.可能它的阅读时间恰到好处,请记住,多核心架构在前一段时间并没有广泛普及,并且Linux项目在其开始时并没有完全写好并且完全成熟了所有花哨的功能.

今天是不同的.很明显,在同一架构上并行运行的不同进程调用相同的系统调用不会导致未定义的行为.Linux内核现在很普遍,即使在多核架构上运行,它的可靠性也是众所周知的.这是我现在的论点.但你客观证明这一点会是什么?

我想在Linux内核(在lxr网站上)显示一些函数作为mutex_lock()系统调用.Eveything经过调整,可以在并行环境中运行.但对于新手来说,代码可能并不那么明显(就像我一样).

请帮我.. ;-)

linux multithreading reentrancy linux-kernel

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