zoukankan      html  css  js  c++  java
  • c++ 后台 常备知识

    关于带缓冲的io与不带缓冲的io,此时的缓冲指应用层面的缓冲,即先写入缓冲区(用户空间),缓冲区满时执行系统调用,将数据拷贝至内核(内核缓冲区),内核缓冲区满才执行io

    即双缓冲,第一层为了减少系统调用次数,第二层为了减少io次数

    进程间通信方式

    匿名pipe,通过文件名描述符建立管道,pipe(fd),然后调用fork,通过fd来读写管道中的数据,可想而知父进程和子进程共享的东西是文件描述符

    高级pipe,pipe、fork、exe()执行其他程序,即实现两个不同程序的通信

    有名pipe,通过 int mkfifo(const char *pathname, mode_t mode); 打开一个有名管道,一旦创建有名管道后,就可以使用一般的文件操作函数操作它,即用fd=fopen(文件名),用fd读写

    消息队列,通过ftok返回一个key值:key_t ftok( char * fname, int id ),msqid = msgget(key, IPC_CREAT|0777) 创建一个消息队列msqid。客户端用ftok传入相同文件名,可活动key值

    信号量, int semget(key_t key, int num_sems, int sem_flags)

    内存映射之mmap ,通过将一段硬盘地址映射至内存,实现多进程与服务进程间的通信,容量大

    内存映射至shm,通过将一段主存空间映射至内存

  • 相关阅读:
    day 05 讲解java三大特性
    day 02 运算符
    石大 6-9 待提交
    poj分类
    NLog使用总结
    VS 2010下单元测试
    MQTT----物联网常用的消息队列协议
    使用jfreechart生成柱状图、折线图、和饼状图
    JavaBean持久化
    使用maven搭建springMVC开发环境
  • 原文地址:https://www.cnblogs.com/GreenScarf/p/11099620.html
Copyright © 2011-2022 走看看