标签:
it |
分类: linux |
Linux pipe 管道到底是什么? 跟踪mkfifo到内核Thursday, 15. March 2007, 03:31:32 [By
Xalanz]技术问题往往都是这样,当它不出问题的时候,你并不会有特别的兴趣去究根问底,所以,出了问题,往往就是好事.Linux
的Pipe 出了一个问题,我不得不问自己,Pipe 到底是什么,在Linux kernel 里面是怎么实现的.
(1)第一步,你调用了mkfifo()或者使用mkfifo命令,在磁盘文件系统中建立了一个有名字的fifo 文件,但是mkfifo并不是一个系统调用,mkfifo()最终调用了mknod()系统调用来执行实际的功能。 (2)mknod()系统调用的内核部分是在linux\fs\namei.c 文件中sys_mknod()实现对系统调用的接口。 (2)对于fifo,sys_mknod()进一步调用虚拟文件系统的统一接口vfs_mknod()。 (3)而vfs_mknod()将调用相应目 |