首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过父进程读取数据,并使用c++中的管道将其发送给子进程。

通过父进程读取数据,并使用C++中的管道将其发送给子进程,可以通过以下步骤实现:

  1. 创建一个管道:使用C++中的pipe()函数创建一个管道,它会返回两个文件描述符,一个用于读取数据,一个用于写入数据。
  2. 创建子进程:使用C++中的fork()函数创建一个子进程,该函数会返回0给子进程,而对于父进程则返回子进程的进程ID。
  3. 在父进程中写入数据:在父进程中,将要发送给子进程的数据写入管道的写入端。可以使用C++中的write()函数将数据写入管道。
  4. 在子进程中读取数据:在子进程中,使用管道的读取端从管道中读取父进程发送的数据。可以使用C++中的read()函数读取数据。

下面是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <unistd.h>

int main() {
    int pipefd[2];
    pid_t pid;
    char buffer[1024];

    // 创建管道
    if (pipe(pipefd) == -1) {
        std::cerr << "Failed to create pipe." << std::endl;
        return 1;
    }

    // 创建子进程
    pid = fork();

    if (pid < 0) {
        std::cerr << "Failed to create child process." << std::endl;
        return 1;
    } else if (pid == 0) {
        // 子进程中读取数据
        close(pipefd[1]);  // 关闭写入端

        // 从管道中读取数据
        ssize_t bytesRead = read(pipefd[0], buffer, sizeof(buffer));
        if (bytesRead > 0) {
            std::cout << "Child process received data: " << buffer << std::endl;
        }

        close(pipefd[0]);  // 关闭读取端
    } else {
        // 父进程中写入数据
        close(pipefd[0]);  // 关闭读取端

        std::string data = "Hello, child process!";
        // 将数据写入管道
        ssize_t bytesWritten = write(pipefd[1], data.c_str(), data.size());
        if (bytesWritten > 0) {
            std::cout << "Parent process sent data: " << data << std::endl;
        }

        close(pipefd[1]);  // 关闭写入端
    }

    return 0;
}

这段代码创建了一个管道,然后使用fork()函数创建了一个子进程。在父进程中,将字符串"Hello, child process!"写入管道。在子进程中,从管道中读取数据并打印输出。

这种通过管道进行进程间通信的方式在多进程编程中非常常见,可以用于实现父子进程之间的数据传递。在实际应用中,可以根据具体需求进行扩展和优化。

注意:以上代码仅为示例,实际使用时应该进行错误处理和异常情况处理,以确保程序的稳定性和可靠性。

参考链接:

  • 管道(操作系统):https://baike.baidu.com/item/%E7%AE%A1%E9%81%93/103840?fr=aladdin
  • C++中的pipe()函数:https://en.cppreference.com/w/cpp/io/c/pipe
  • C++中的fork()函数:https://en.cppreference.com/w/cpp/io/c/fork
  • C++中的read()函数:https://en.cppreference.com/w/cpp/io/c/read
  • C++中的write()函数:https://en.cppreference.com/w/cpp/io/c/write
相关搜索:父进程,创建2个子进程并使用管道发送数据使用管道从主进程读取子进程的stdout,导致子进程死亡为什么父进程无法从ETmode中的管道读取数据使用Boost C++使用管道将子进程的输出发送到父进程(将标准输出重定向到管道)读取子进程中的管道时,读取系统调用返回-1匿名管道:子进程被杀死时,父进程中的ReadFile会一直等待我可以使用管道作为父进程的读操作和子进程的写操作吗?如何使用react钩子将在子进程中创建的数据发送到父进程?Qt C++:无法为其他线程中的父级创建子进程如何从Python子进程中启动的C++文件中读取文件?如何使用子进程缩小视频,然后通过管道将数据传输到stdout,并使用ffplay播放并保存它使用EF Core处理SQL Server中的乐观并发-当更新子进程时,如何更新父进程?如何在python中通过子进程使用来自bash的数据流无法使用Python从Windows上派生的子进程中读取标准输出数据通过管道传输到子进程() syscall:如何在终端中模拟按enter键(在输入过程中)?在c++中的CreateProcess之后使用ctrl+c终止子进程(WinAPI)在python3中使用子进程模块通过管道传输两个命令时遇到问题使用子进程模块在Python中执行管道命令的任何方法,而不使用shell = True?Firebase实时数据库DataSnapshot仅读取子进程中的最后一个值在将请求正文通过管道传输到子进程标准时,如何在Express中检测意外的请求结束
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果

最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。...它是我们启动子进程时,控制子进程启动方式的参数。...我们之后将hWrite交给我们创建的子进程,让它去将信息写入管道。而我们父进程,则使用hRead去读取子进程写入管道的内容。...,所以我段代码动态申请了一段内存,并根据实际读取出来的结果动态调整这块内存的大小。...delete [] pBuffer; wprintf(L"%s", cstrBuffer); } return 0; }         这样,我们就可以拿到子进程输出结果并加以分析

3.9K10

CreatePipe匿名管道通信

一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。...在使用匿名管道通信时,服务器进程必须将其中的一个句柄传送给客户机进程。句柄的传递多通过继承来完成,服务器进程也允许这些句柄为子进程所继承。...如果是父进程从子进程读取数据,那么由子进程调用GetStdHandle()取得管道的写入句柄,并调用WriteFile()将数据写入到管道。...在下面将要给出的程序示例中,将由父进程(管道服务器)创建一个子进程(管道客户机),子进程回见个其全部的标准输出发送到匿名管道中,父进程再从管道读取数据,一直到子进程关闭管道的写句柄。...在本示例中,将当前进程的标准输出设置为使用匿名管道,再创建子进程,子进程将继承父进程的标准输出,然后再将父进程的标准输出恢复为其初始状态。

1.1K10
  • 【Linux修炼】15.进程间通信

    ,这份资源是由文件系统提供的,struct file包括file的操作方法和自己的内核缓冲区;父进程通过文件缓冲区将数据写入,子进程通过文件缓冲区将数据读取,这不就是一个进程写入,另一个进程读取,不就是进程间通信吗...---- 总结一下上述核心: 我们对应的父进程通过调用管道特定的系统调用,以读和写的方式打开一个内存级的文件,并通过fork创建子进程的方式,被子进程继承下去之后,各自关闭对应的读写端,形成的一条通信信道...[1] << endl;//4 写 return 0; } 因此,上述代码的子进程没有打印任何的消息,而是我们的父进程获取读取消息并打印出来,这种通信就被成为管道通信。...其中产生的缓冲区会将管道左侧将要打印的数据加载到缓冲区,在通过右侧的进行筛选并打印到指定位置。...2.5 进程控制多个子进程 父进程可以实现向任意一个子进程中写入,我们可以让父进程向任何进程中写入一个四字节的命令操作码,称之为commandCode,即现在想让哪一个进程运行,就向哪一个进程发送数据

    48800

    进程间的通信--管道

    接着创建子进程,子进程会继承父进程中打开的文件,也就是继承父进程的文件描述符表,此时父子进程就会共享同一个文件资源,子进程可以通过4号文件描述符向文件中进行写入,父进程就可以通过3号文件描述符从文件中进程读取...subProcessWrite(int wfd)函数用于子进程,它不断地生成消息并写入管道 (wfd) 中,每隔一秒发送一次消息 fatherProcessRead(int rfd)函数用于父进程,它不断地从管道...(rfd) 中读取消息并输出到控制台 子进程关闭不需要的管道读取端 (pipefd[0]),调用 subProcessWrite() 发送消息,然后关闭写入端 (pipefd[1])。...写的次数和读取的次数不是一一匹配的 管道的通信模式是一种特殊的半双工 2.2管道的使用场景 2.2.1命令行中的管道 管道 | 在这里用于串联命令,实现对进程信息的过滤、筛选和显示,使得可以实时监视和管理特定的进程活动...当父进程需要某一个子进程的时候,只需要将信息传入对应管道的写端,然后对应的子进程从管道读端读取数据。

    7610

    【Linux】进程间通信 --- 管道 共享内存 消息队列 信号量

    在匿名管道这里,我们通过fork创建子进程,让子进程继承父进程的文件描述符表,这样子进程中会有一个指向匿名管道文件的文件描述符,并且父进程也会有这样的文件描述符,当然是在fork之前,父进程要打开一个管道文件...子进程向管道进行写入的代码如下,我们调用了snprintf( )将要写入到管道的信息进行格式化,这步我们也可以通过C++的string来实现,但string的使用太简单并且没有C语言的接口更加灵活,所以我们用...,将管道中的数据当作字符串来处理,所以我们会在读取到数据后,手动的在其末尾处添加\0,将其看作一个字符串。...这是父进程在读取管道中的信息时这么认为的,他将管道中的数据看作字符串处理。...他其实是通过继承的方式,父进程打开一份内核级匿名管道文件,这个内核级文件的地址被放到文件描述符表里面,此时fork创建子进程,子进程通过自己的文件描述符表中的内核级匿名管道文件地址就可以找到这份公共资源

    1.5K40

    C语言第四章(进程间的通信,管道通信,pipe()函数)

    父进程在 fork() 之前创建一个管道并将其写入端口发给子进程。父进程需要等待子进程结束并通过管道读出端口获取其输出。...因此,父进程通过 read() 函数从管道的读取端口读取数据,并将其存储到预先定义的缓存中。...然后通过 fork() 函数创建一个子进程。在父进程中,通过 write() 方法向管道里面的写入端发送数据;而在子进程中,则通过 read() 从管道里面的读取端获取数据。...在父进程中,先调用 write() 方法将消息发送到管道写入端,发送完成后再关闭相应的文件描述符。而在子进程中,则先关闭写入端,接着通过 read() 方法从管道读取数据,并输出这条信息。...因此,当程序运行时,父进程首先向子进程通过管道发送了一条消息,并关闭文件描述符;而子进程中对读文件描述符进行监听,等待数据传输,从管道的读取端接收到数据之后,再将其输出。

    9310

    Linux进程通信——管道

    数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。...父进程往文件的缓冲区写数据,子进程从缓冲区读数据,这个就是进程之前的通信,这个方法及操作系统提供的内核文件,称为管道文件。(管道本质上就是文件) 那么需不需要将文件缓冲区的内容经过磁盘呢?...最后一部就是让父进程关闭读端,子进程关闭写端,这样就能让父进程给子进程读取数据了。 一般而言,我们管道只能用来单项数据通信。 管道就是输送资源的,就是数据。...这种通信,称之为管道通信。 这个过程其实就相当于父进程通过操作系统写给管道,也就是相当于写给操作系统,然后子进程通过操作系统从管道当中读取内容。...这说明如果管道没有数据了,读端在读,默认会直接阻塞当前正在读取的进程,只有管道有数据,操作系统识别到,读端才会去读取数据。 2. 管道是一个固定大小的缓冲区。

    4K70

    【Linux】vscode的使用 | 进程间通信(简单概括)

    ,父进程进行读取,关闭子进程对应的读端,以及父进程的写端 此时就可以正常通信了 为什么把读写都打开,只打开读或者写不可以吗?...,也会使用 errno来说明错误的原因 系统调用接口是由系统使用c语言的一套软件 2.创建子进程以及通信 关闭不需要的fd,让父进程进行读取,让子进程进行写入 一般认为pipefd[0] 为读端 ,...构建成一个字符串 打包给 父进程 使用snprintf函数 将amestr 字符串内容与 计数器 cnt 以及pid值写入buffer中,并规定传入buffer大小 c_str():返回const...使用write 将缓冲区的count大小的数据写入 fd中 将buffer中的所有数据都传入读端中 3....父进程读取消息 使用write 将缓冲区的count大小的数据写入 fd中 ssize_t read(int fd, void *buf, size_t count); 从文件描述符fd中将我们想要的数据

    88840

    进程间通信和线程间通信的区别_有些线程包含多个进程

    ,指令指针也完全相同,子进程拥有父进程当前运行到的位置(两进程的程序计数器pc值相同,也就是说,子进程是从fork返回处开始执行的),但有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中...下面是信号操作中常用的函数: 例子:创建子进程,为了使子进程不在父进程发出信号前结束,子进程中使用raise函数发送sigstop信号,使自己暂停;父进程使用信号操作的kill函数,向子进程发送sigkill...pipe用于相关进程之间的通信,例如父进程和子进程,它通过pipe()系统调用来创建并打开,当最后一个使用它的进程关闭对他的引用时,pipe将自动撤销。...一旦建立,任何进程都可以通过文件名将其打开和进行读写,而不局限于父子进程,当然前提是进程对FIFO有适当的访问权。当不再被进程使用时,FIFO在内存中释放,但磁盘节点仍然存在。...无名管道: pipe的例子:父进程创建管道,并在管道中写入数据,而子进程从管道读出数据 命名管道: 和无名管道的主要区别在于,命名管道有一个名字,命名管道的名字对应于一个磁盘索引节点,有了这个文件名,

    1.2K30

    Linux:进程间通信(一.初识进程间通信、匿名管道与命名管道、共享内存)

    1.认识进程间通信 我们通过之前的知识知道,进程具有独立性。两个进程之间时不能进行数据的直接传递的 但我们之前学校的fork()函数不是能传递子进程的pid给父进程吗?...这使得对管道的访问速度非常快,类似于对内存的直接访问 匿名管道是通过创建子进程,而子进程会继承父进程的相关属性信息,来实现不同的进程看到同一份资源 通过管道,一个进程(写端)可以将数据发送给另一个进程...这个函数接受一个包含两个文件描述符的数组作为参数,并返回两个文件描述符:一个用于读操作,另一个用于写操作。然后,可以使用fork()创建一个子进程,并在父进程和子进程之间使用这些文件描述符进行通信。...只要管道中没有新的数据到来,读端进程就会一直阻塞等待 管道内部被写满而且读端(父进程)不关闭自己的fd,写端(子进程)写满之后,就要阻塞等待 管道具有固定的缓冲区大小,当缓冲区中的数据量达到上限时...reader(pipefd[0]); wait(NULL); return 0; } 不再向管道写入数据并且关闭了写端(子进程)文件描述符时,读端(父进程)可以继续从管道中读取剩余的数据

    44320

    【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

    前言:当提及Linux系统中的进程间通信(IPC),管道(Pipes)无疑是最基础且广泛使用的一种机制。作为匿名通信的典范,管道为进程间数据交换提供了一个简单而有效的途径。...我们将从管道的基本概念出发,逐步揭开其背后的工作原理,并通过实例演示如何在实际编程中创建、使用和维护管道。...进程间通信更常见的是通过一组编程接口来实现,这些接口允许程序员协调不同的进程,使它们能在一个操作系统里同时运行,并相互传递、交换信息 必要性: 即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行...<< endl; } } 我们这样设计代码,先让子进程写入之后,关闭掉pipefd[1],然后观察父进程是否会打印,我们需要的代码 读端关闭代码示例:(C++): // 父进程 close...管道,作为进程间通信的基础而又高效的工具,不仅简化了数据在不同进程间的流动过程,还极大地促进了多任务并发执行的灵活性 通过本文的学习,我们见证了管道从创建到使用的全过程,理解了其背后的工作原理,并掌握了如何在实际编程中利用管道来实现进程间的数据交换

    13010

    【Linux】匿名管道通信场景——进程池

    初始化进程池   进程池的实现是依靠匿名管道,通过进程间通信使得父进程能够管理多个进程任务,相当于父进程拥有了很多个进程——进程池,通过不同的进程完成指定的任务。   ...因为有多个管道和子进程,为了方便父进程使用不同管道发送对应信息给子进程,我们需要将管道的文件描述符以及对应子进程的pid保存起来,我们选择将它们封装在一个Channel类中。...又因为有多个匿名管道和子进程,所以将多个Channel类对象储存在C++STL中的容器vector中来方便父进程进行管理进程池。...2.2 执行任务 发送任务 使用按顺序轮询的方式派发任务给不同的子进程——设置10次任务循环,先通过任务管理类中的选择函数获取任务编号,然后通过父进程进程池管理类将任务编号发送给子进程。...子进程接受并执行任务——先通过匿名管道接受父进程发送的任务编号,然后通过任务管理类对象执行任务编号所对应的任务函数。

    10210

    【linux学习指南】 进程间通信&&匿名管道&&理解管道的本质

    Unix/Linux 系统中,我们可以使用 fork() 系统调用来创建子进程,并通过共享管道(pipe)进行进程间通信。...父进程可以向管道的写端 fds[1] 写入数据。 在子进程中: 子进程关闭管道的写端 fds[1]。 子进程可以从管道的读端 fds[0] 读取数据。...通过这种方式,父进程和子进程可以通过共享的管道进行通信。父进程将数据写入管道,子进程从管道中读取数据。 这个过程中,父进程和子进程各自持有管道的一端文件描述符,确保了数据的正确流向。...当父进程关闭读端,子进程关闭写端时,双方就建立了一个单向的数据流通道。 使用 fork() 创建的子进程与父进程共享相同的内存空间,这意味着它们可以共享同一个管道。...文件描述符共享: 当使用 fork() 创建子进程时,子进程会继承父进程的所有文件描述符,包括管道的文件描述符。 父进程和子进程共享同一个管道的文件描述符,这使得它们可以通过管道进行通信。

    8410

    【Linux】进程间通信——匿名管道

    1.进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程...进程间通信分类 Linux进程间通信可以分为以下几种分类: 匿名管道(Pipe):管道是一种半双工的通信机制,可以在同一个进程中的两个文件描述符之间传递数据。...读进程从管道中读取数据,写进程向管道中写入数据。管道只能在具有父子关系的进程之间使用。   ...父进程创建子进程: 子进程拷贝父进程的task_struct,这也就是为什么父进程要先将管道创建出来,再创建子进程并且要将读写文件同时打开,是为了给子进程继承 如果父进程写入,子进程读取,那么就将父进程读取端关闭...,子进程写入端关闭;如果父进程读取,子进程写入,那么就反之: 如果不关文件描述符,会造成文件描述符泄露并且可能会误操作,所以建议关闭 管道的通信是单向的,即父进程或子进程不能对一个管道同时读和写,

    11500

    linux进程间通信方式有哪些_高级进程通信方式

    它有两个特点: 半双工,即不能同时在两个方向上传输数据。有的系统可能支持全双工。 只能在父子进程间。经典的形式就是管道由父进程创建,进程fork子进程之后,就可以在父子进程之间使用了。...,"www.yanbinghu.com",sizeof("www.yanbinghu.com")); } return 0; } 在程序中,我们创建了一个管道,父进程关闭了写通道,子进程关闭读通道...;子进程向管道内写入字符串,而父进程从管道中读取字符串并输出。...,然后从FIFO中读取数据。...另外一方面,管道和FIFO一旦相关进程都关闭并退出后,里面的数据也就没有了,但是对于消息队列,一个进程往消息队列中写入数据后退出,另外一个进程仍然可以打开并读取消息。

    2.6K20

    Linux 信号

    ,因为 Linux 是继承于 UNIX 的,所以 Linux 也支持信号机制,通过向一个或多个进程发送 异步事件信号 来实现,信号可以从键盘或者访问不存在的位置等地方产生;信号通过 shell 将任务发送给子进程...SIGBUS SIGBUS 将造成 总线中断 错误时发送给进程 SIGCHLD 当子进程终止、被中断或者被中断恢复,将 SIGCHLD 发送给进程。...此信号的一种常见用法是指示操作系统在子进程终止后清除其使用的资源。 SIGCONT SIGCONT 信号指示操作系统继续执行先前由 SIGSTOP 或 SIGTSTP 信号暂停的进程。...SIGTRAP 在发生异常或者 trap 时,将 SIGTRAP 信号发送到进程 SIGURG 当套接字具有可读取的紧急或带外数据时,将 SIGURG 信号发送到进程。...不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登录,wget也 能继续下载。 此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。

    4.8K20

    进程间通信Linux

    进程间通信介绍 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。...通道的意思 cmdfd文件描述符 slaverid代表哪个子进程 把它放进vector容器里 思路步骤 管道创建 void(n),假装使用一下,要不然编译不过 创建父子进程 父进程写,子进程读 子进程要读取...8,子进程拿到的读端fd是3 改变一下,直接从键盘(0号描述符)里读,不从管道(3)里读了,就没有管道的概念了,slaver就不用传参了,父进程通过管道写,子进程通过标准输入读 用到了dup2,将从pipefd...[0]中读变成从0开始读 想让父进程固定的向管道里写入指定大小字节的内容,必须读取四个字节,四个字节四个字节的写和读,这里的管道64kb 必须读取四个字节 如果父进程不给子进程发送数据呢?...开始控制子进程 生成一个随机数种子 可以随机选择任务和选择进程 cmd是任务码,测试一下,父进程控制子进程,父进程发送给子进程(通过cmdcode连续) 在Task.hpp里 要用到函数指针 main中的任务了就属于

    6910

    进程池设计

    进程池设计 图片 代码目的 创建一个父进程和多个子进程,父子进程之间通过匿名管道完成进程间通信。让父进程作为写端,子进程作为读端,父进程随机给任意一个子进程写入数据让子进程完成相应任务。...receiveTask函数中阻塞读取管道里的数据。...前提已知父进程往匿名管道写入整数数据,数据范围为0,任务个数-1即任务数组对应的下标范围,子进程把读取到的数据存到变量retcode里,然后判断retcode是否是整数数据大小,如果是就返回数据给上层CreateSubProcesses...这里提到的子进程操作主要是子进程阻塞读取父进程写入的数据,还有子进程拿到数据执行任务。...vector funcMap;//建立一个任务表:父进程写入管道,子进程在管道读取,读取到的数据引导子进程去完成一些任务 loadTaskFunc(&funcMap); //1.创建子进程并且创建好父进程与各个子进程通信的管道

    38240

    C 程序来演示 fork() 和 pipe()

    pipe():用于Linux中的进程间通信。这是一个系统功能。...P1 获取一个字符串并将其传递给 P2。P2 将接收到的字符串与另一个字符串连接起来,而不使用字符串函数,并将其发送回 P1 进行打印。...例: int fd[2]; pipe(fd); fd[0]; //-> 用于使用读端 fd[1]; //-> 用于使用写结束 父进程内部: 我们首先关闭第一个管道的读取端 (fd1[0]),然后通过管道的写入端...现在,父进程将等到子进程完成。在子进程之后,父进程将关闭第二个管道的写入端(fd2[1]),并通过管道的读取端(fd2[0])读取字符串。...内部子进程: Child 通过关闭管道的写入端 (fd1[1]) 来读取父进程发送的第一个字符串,读取后连接两个字符串并通过 fd2 管道将字符串传递给父进程并退出。

    76520

    面经总结——腾讯面试题汇总(一)

    线程是属于进程的,当进程退出时该所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占的资源。进程和线程都可以有优先级。 进程间可以通过IPC通信,但线程不可以。...进程间通信 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用进程间的亲缘关系通常是指父子进程关系。...I/O多路转接之select 13.fork()后子进程和父进程的返回值分别是什么? 答:父进程fork()之后返回值为子进程的pid号,而子进程fork()之后的返回值为0。...fork函数详讲 fork函数的特点概括起来就是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。 fork的另一个特性是所有由父进程打开的描述符都被复制到子进程中。...父、子进程中相同编号的文件描述符在内核中指向同一个file结构体,也就是说,file结构体的引用计数要增加。

    1.5K30
    领券