![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Liunc/Unix系统编程
文章平均质量分 73
lvyilong316
这个作者很懒,什么都没留下…
展开
-
Linux文件共享(一)——进程与打开文件
Linux支持在不同进程间共享打开文件。为了说明文件共享,先来说明内核用于所有I/O的数据结构。 他们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。0.1和文件有关的对象(1) inode(i节点): 保存一个文件的通用信息,每个inode有一个inode number,在文件系统中,一个inode number能够唯一地标识一个文件。(2) dentry(目录项对原创 2014-04-06 12:29:11 · 3073 阅读 · 0 评论 -
Linux文件共享(六)——描述符传递
注:转载请注明出处 作者:lvyilong3165.1 进程间描述符传递首先,我们先来讨论一个问题——进程间传递文件描述符究竟传递的是什么?我们从传递描述符函数的参数来看是个fd,我们知道fd是打开文件指针的在数组中的下标,是一个整数,那么我们仅仅是把一个整数传递给另一个进程吗?答案肯定是否定的,因为仅仅是传递整数值,没有必要专门去实现一个api。至于深层次的的原因,我们可原创 2014-04-07 10:48:20 · 1394 阅读 · 0 评论 -
Linux文件共享(二)——两个独立进程打开同一个文件
如果两个独立进程各自打开了同一文件,则有图3-2中所示的安排。我们假定第一个进程使该文件在文件描述符3上打开,而另一个进程则使此文件在文件描述符4上打开。打开此文件的每一个进程都得到一个文件对象,但对一个给定的文件只有一个v节点表项。每个进程都有自己的文件对象的一个理由:这种安排使每个进程都有它自己对该文件的当前位移量。这种情况不会增加对应的打开文件引用计数,而会增加dentry的引用。原创 2014-04-07 10:16:14 · 3543 阅读 · 0 评论 -
Linux文件共享(三)——dup
dup返回的新文件描述符是当前可用文件描述符中的最小值。它返回的新描述符与参数fd共享一个文件表项(file对象)。调用dup会使file的引用计数增1,即增加“打开文件”引用计数。图3-3是apue中的原图。 我们用以下程序测试并说明:#include #include #include #include #define FILE_MODE (S_IRUSR|S_IWUSR|原创 2014-04-07 10:30:33 · 928 阅读 · 0 评论 -
Linux文件共享(五)——线程共享文件
注:转载请注明出处 作者:lvyilong3164.1 Linux线程实现在谈论线程之间共享文件之前,我想首先简单的介绍下linux线程的实现。最初的进程定义都包含程序、资源及其执行三部分,其中程序通常指代码,资源在操作系统层面上通常包括内存资源、IO资源、信号处理等部分,而程序的执行通常理解为执行上下文,包括对cpu的占用,后来发展为线程。在线程概念出现以前,为了减小进程切换的开原创 2014-04-07 10:43:03 · 1128 阅读 · 0 评论 -
Linux文件共享(四)——父进程与子进程之间的文件共享
注:转载请注明出处 作者:lvyilong316由fork产生的进程为子进程。fork的一个特性是父进程所有的打开文件描述符(file_struct)都被复制到子进程中,父子进程的每个相同的打开描述符共享一个文件表项如图。 在linux系统中的具体实现可用下图表示(说明:进程的fs_struct也会被复制,图中没有画出)。这种共享的方式使父、子进程对同一个文件使用了原创 2014-04-07 10:36:37 · 1671 阅读 · 0 评论