小编ntl*_*0ve的帖子

pid_t(和类似的类型) - 为什么,为什么?

调用背后的逻辑是什么,比如getpid()返回类型的值pid_t而不是unsigned int?还是int?这有什么用?

我猜这与便携性有关?保证pid_t在不同平台上的尺寸相同,可能有不同尺寸int的等等?

c pid type-equivalence

48
推荐指数
4
解决办法
5万
查看次数

找到了铬的源代码

我刚检查了铬的来源,但我迫切需要学习如何绕过这个怪物.

我如何搜索实现我感兴趣的行为/功能的部分代码?

假设我想看看URL输入地址栏后会发生什么.我如何找到这段代码?

或者,我希望看到在解析HTML时,达到某个标记时会发生什么.

我面前有大量的源代码,没有导航的技巧.我该如何学习这项技能?

google-chrome chromium

23
推荐指数
1
解决办法
3780
查看次数

mmap函数中MAP_SHARED和MAP_PRIVATE有什么区别?

用打转转mmap了它的乐趣,我有以下代码:

(.. snip ..)
fd = open("/home/me/straight_a.txt", O_RDONLY);
if (fd == -1) {
    perror("open");
    exit(1);
}

m = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0);

if (m == MAP_FAILED) {
    perror("mmap");
    exit(1);
}

printf("m is %p\n", m);

printf("*m = %c\n", *m);
printf("*(m+1) = %c\n", *(m+1));
(.. snip ..)
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但在我做到这一点之前,我试过......

m = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, 0);
Run Code Online (Sandbox Code Playgroud)

...和mmap错误地用:

mmap: Permission denied
Run Code Online (Sandbox Code Playgroud)

一般来说,两个标志之间的区别是什么(手册页对这个主题不慷慨)?我遗失了什么样的许可(以及在哪里)?

编辑

喜欢它通常发生..部分想通了.

结果open需要O_RDWR一面旗帜.

那么,我是否正确地假设:

  • MAP_PRIVATE - 更改仅在内存中进行,而不是保存到磁盘?
  • MAP_SHARED - 更改将保存到磁盘...

...但我想,我不会把任何东西保存在磁盘上.只是在内存上运行.

c linux mmap

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

"这是一个存根,用于索引"在大多数方法中?

我研究curses.rb了的curses宝石,我发现这个无处不在:

def attrset(attrs)
    #This is a stub, used for indexing
end
# bkgdset(ch)
#  
# Manipulate the background of the current window
# with character Integer +ch+
# 
# see also Curses.bkgdset
def bkgdset(ch)
    #This is a stub, used for indexing
end
# bkgd(ch)
#  
# Set the background of the current window
# and apply character Integer +ch+ to every character.
# 
# see also Curses.bkgd
def bkgd(ch)
    #This is a stub, used for indexing …
Run Code Online (Sandbox Code Playgroud)

ruby rubymine

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

最大堆栈大小,ulimit -s,segfault 11 - 这是如何工作的?

所以,我这样做:

$ ulimit -s
8192
Run Code Online (Sandbox Code Playgroud)

大.据我了解,任何进程的堆栈段不能超过8192千字节.

现在,挑战那个......

#include <stdio.h>

void over_8k(void) {
    char buf[1024*1024*20];
}

int main(int argc, char** argv) {
    printf("Starting .. ");
    over_8k();
    printf(" finishing.\nHow did this work?\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译.然.没问题.那不是对的?over_8k单独应该有一个超过20兆字节的堆栈帧.好吧,让我们尝试访问这些2000万字节:

#include <stdio.h>
#include <string.h>

void over_8k(void) {
    char buf[1024*1024*20];
    memset(buf, 'A', sizeof(buf));
}

int main(int argc, char** argv) {
    printf("Starting .. ");
    over_8k();
    printf(" finishing.\nHow did this work?\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

.. 击鼓 ..

Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

大.但那不是我期望的错误吗?内存访问无效?

为什么会引发段错误,而且之前不会出错?随叫随到over_8k?这是如何运作的?我想知道一切.

c

10
推荐指数
2
解决办法
3768
查看次数

嵌套对象和setattr&getattr(是的,就是那个时候)

概述:

class Inner(object):
    def __init__(self, x):
        self.x = x

class Outer(object):
    def __init__(self, z):
        self.inner = Inner(z)

o = Outer(10)
Run Code Online (Sandbox Code Playgroud)

现在,我希望Outer对象的行为透明 - 任何设置的属性o都应该设置为o.inner,同样用于读取:o.something应该返回,实际上,应该返回的值o.inner.sommething.有点像代理或中继.

__getattr__对于Outer看似简单&作品:

def __getattr__(self, item):
    return getattr(self, item)
Run Code Online (Sandbox Code Playgroud)

我该怎么处理__setattr__?我无法想出任何不会导致递归错误的事情,让我讨厌自己.

或者概念本身是否存在缺陷?

(我尝试的另一种方法是创建Outer一个子类Inner- 这在现在并不真正美观@classmethods,更不用说IDE会在那些内部迷失 - 无法解决某些属性.让我们暂时离开,也许吧?)

python

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

Printf无法在C信号处理程序中工作

有问题的代码(最小化案例):

#include <stdio.h>
#include <signal.h>

int counter = 0;

void react_to_signal(int n) {
    fprintf(stderr, "Caught!\n");
    counter++;
}

int main(int argc, char** argv) {

    signal(SIGINFO, react_to_signal);

    while (1) {
        printf("%d\n", counter);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我运行代码,它应该循环,打印出来0.然后在另一个shell ..

kill -s SIGINFO <pid_of_my_process>
Run Code Online (Sandbox Code Playgroud)

信号传递,c递增..但fprintf不会发生.

为什么会这样?处理程序代码在什么环境/上下文中运行?我在哪里可以读到这个?

c signals

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

$ log(或AngularJS指令中的其他服务)

我有以下指令用于初始化timeago插件.

Directives.directive('timeago', function() {
   return function(scope, element, attrs) {
       $(element).attr('title', scope.post.utc_posted);
       $(element).timeago();
   }
});
Run Code Online (Sandbox Code Playgroud)

我怎么能$log在我返回的函数中使用/传递?

angularjs

3
推荐指数
1
解决办法
1662
查看次数

读取 JSON:“\u00c5\u0082”是什么编码?如何将其获取到 unicode 对象?

我正在解析的 JSON 文件中的值之一是Wroc\u00c5\u0082aw. 我怎样才能把这个字符串变成一个 unicode 对象,产生“Wroc?aw”(在这种情况下是正确的解码)?

python unicode json

3
推荐指数
2
解决办法
8749
查看次数