10 2011 档案
摘要:首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(Application Programming Interface,API),我们要在这个系统上编写各种应用程序,就是通过这个API接口来调用系统内核里面的函数。如果没有系统调用,那么应用程序就失去内核的支持。 现在,再聊不带缓存的I/O操作:
阅读全文
摘要:这两天在看APUE的进程环境这章,看着看着就觉得自己对可执行文件在内存中的分配理解的一点也不清楚,花了很长时间终于弄明白了,下面我依次说说跟这些有关的内容。C语言进程在运行时,可以分成几个段,这些段从低地址到高地址分别是正文段,初始化数据段、非初始化数据段(bss),栈以及堆。可以在一个可执行文件上运行size命令看到各个段的情况。其中程序的局部变量时存在栈里的,经过初始化的全局和静态变量是存在初始化数据段,bss段存储非初始化的全局变量,然后有一个问题出来了,我们经常看到说不能返回指向局部变量的指针,结果我在程序里验证后发现没有问题,程序如下:int*fun();main(){int*p;p
阅读全文
摘要:这两天又回头看了看python中的赋值、浅拷贝和深拷贝,以前看的时候总觉得他们之间有关系,但又理不清楚,今天总算有了点头绪,所以跟大家分享一下我的理解。先说说赋值,其实python中的赋值其实是赋值了一个引用,例如:foo1=1.0foo2=foo1用操作符is判断时,你可以发现结果是true,是因为python是先创建了一个对象1.0,然后这个对象的引用又被赋值给了foo1和foo2,但是如果是这样:foo1=1.0foo2=1.0这时你会发现,这其实是创建了两个不同的对象,用内建函数id()可以发现,二者的身份不同;其实python还有一个特例,例如:a=1b=1你会发现id(a)=id(
阅读全文
浙公网安备 33010602011771号