- 论坛徽章:
- 0
|
看CORBA讲到一个尖锐的问题,就是从I/O读入输入的字符(长度没有限制),然后返回给调用他的程序。里面列举了3种方法的对比。
其中一种讲到了UNIX 的系统read函数。
我一直想看看这些read,printf之类怎么实现的,当然windows下面反汇编可以看到汇编代码。但是我不知道比如read到底是怎么实现的?
后来我查到Linux内核中循环缓冲区(http://www.kerneltravel.net/jiaoliu/kern-kfifo.html),明白了点内核是怎么处理缓冲区的,但是缓冲区的大小还是不清楚怎么查到?- unsigned int __kfifo_put(struct kfifo *fifo, unsigned char *buffer, unsigned int len)
- {
- unsigned int l;
- len = min(len, fifo->size - fifo->in + fifo->out);
- ...
- smp_mb();
- /* first put the data starting from fifo->in to buffer end */
- l = min(len, fifo->size - (fifo->in & (fifo->size - 1)));
- memcpy(fifo->buffer + (fifo->in & (fifo->size - 1)), buffer, l);
- /* then put the rest (if any) at the beginning of the buffer */
- memcpy(fifo->buffer, buffer + l, len - l);
- ...
- smp_wmb();
- fifo->in += len;
- return len;
- }
复制代码 还有比如我看到STL里面vector的find函数,在手册里面没有查到,就像去看他是怎么实现的,可是不知道怎么查找源码?
还有关于C语言或者C++语言的实现问题,我一直在想,但是想不明白:
c/c++语言的实现可否说是编译器实现的一部分,包括头文件里面函数的实现,和语法检查。
烦请高手们解答,谢谢。 |
|