调用背后的逻辑是什么,比如getpid()返回类型的值pid_t而不是unsigned int?还是int?这有什么用?
我猜这与便携性有关?保证pid_t在不同平台上的尺寸相同,可能有不同尺寸int的等等?
我刚检查了铬的来源,但我迫切需要学习如何绕过这个怪物.
我如何搜索实现我感兴趣的行为/功能的部分代码?
假设我想看看URL输入地址栏后会发生什么.我如何找到这段代码?
或者,我希望看到在解析HTML时,达到某个标记时会发生什么.
我面前有大量的源代码,没有导航的技巧.我该如何学习这项技能?
用打转转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一面旗帜.
那么,我是否正确地假设:
...但我想,我不会把任何东西保存在磁盘上.只是在内存上运行.
我研究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) 所以,我这样做:
$ 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?这是如何运作的?我想知道一切.
概述:
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会在那些内部迷失 - 无法解决某些属性.让我们暂时离开,也许吧?)
有问题的代码(最小化案例):
#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不会发生.
为什么会这样?处理程序代码在什么环境/上下文中运行?我在哪里可以读到这个?
我有以下指令用于初始化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在我返回的函数中使用/传递?
我正在解析的 JSON 文件中的值之一是Wroc\u00c5\u0082aw. 我怎样才能把这个字符串变成一个 unicode 对象,产生“Wroc?aw”(在这种情况下是正确的解码)?