栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

fork函数与管道

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

fork函数与管道

fork之后

fork之后,内存创建副本进程,并且返回pid
pid标识子进程和父进程
pid<0, fork出错
pid=0,子进程
pid>0, 父进程
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。

相当于复制一个对象。

#管道

管道并非属于进程资源,而是和套接字一样,属于操作系统资源(也就不是fork函数的复制对象

#include 
#include 
#define BUF_SIZE 30
 

int main(int argc, char *argv[]) {
    int fds[2];
    char str[] = "Who are you?";
    char buf[BUF_SIZE];
    pid_t pid;
 
    pipe(fds);
    pid = fork();
    if (pid == 0)
    {
        write(fds[1], str, sizeof(str));
    }
    else
    {
        read(fds[0], buf, BUF_SIZE);
        puts(buf);
    }
    return 0; }

示例代码实现了一个单工通信的管道,

fork复制的并非管道,而是用于管道I/O的文件描述符
文件描述符数组fds[2]
index = 0是读端
index = 1 是写端

ref: https://www.cnblogs.com/beiluowuzheng/p/9691148.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号