• 进程和线程新增


    1.  renice 改变正在运行进程的优先级。

    2.  bg 把挂起的进程放到后台执行。

    3.  getpid() 获得进程号  getppid() 获得父进程的进程号。

    4.  WEXITSTATUS(s) 在父进程中返回子进程号。

    5.  一个线程最大只有8M内存。

    6.  每个线程私有的资源:线程ID(TID)   PC和相关寄存器  堆栈  errno  信号掩码和优先级  执行状态和属性

    7.  -D_REENTRANT 优化线程生成可重入代码

    8.  int kikk(pid_t, int sig);  int raise(int sig); raise 只允许给自己发信号。

    9.  信号通信signal函数原型  typedef void (*sighandler_t)(int)  sighandler_t signal(int signum, sighandler_t handler);

    10.  常用的进程通信方式:

      1)传统方式:无名管道(pipe),有名管道(fifo),信号(signal)灯

      2)System V IPC对象:共享内存(share memory),消息队列(message queue),信号灯(semaphore)

      3)BSD:套接字

    11.  share memory:

      1)int shmget(key_t key, int size, int shmflg);获得共享内存

      2)char *shmat(int shmid, const void *shmaddr, int shmflag);映射到内存

      3)int shmdt(const void *shmaddr);撤销映射

      4)int shmctl(int shmid, int cmd, struct shmid_ds *buf);可以用于删除内存。

    12.  打开消息队列:megget  添加消息:megsnd  读取消息:msgrcv  控制消息:msgctl

    13.  信号灯的种类:

      1)POSIX 有名信号灯(线程之间)

      2)POSIX无名信号灯(基于内存)

      3)System V信号灯(IPC对象)

    14.  System V 信号灯权限

      1)int semget(key_t key, int nsems, int semflg); nsems,信号灯的数目 semflg 权限:IPC_CREAT|0666

      2)int semctl(int semid,int semnum, int cmd, union semun arg) 信号控制,可以用于设置信号灯的值,此时cmd为SETVAL。

      3)int semop(int semid, struct sembuf*stops, size_t nsops)  结构体sembuf中,-1:分配资源,p操作,消费者  1:释放资源,v操作,生产者。              0:等待。

  • 相关阅读:
    在C++中使用GDI+绘制带箭头的线,箭头大小可调
    tomcat通过conf-Catalina-localhost目录发布项目详解
    VC++ 获取Windows系统标准字体方法
    简单实现全屏对话框
    采用ATL实现无模板对话框的显示
    C++实现全局鼠标、键盘消息hook,支持事件
    C++ FastDelegate 扩展,实现与.net类似的事件处理功能
    技术研发在国内的现状
    [STM32F103]DMA原理
    [STM32F103]RTC日历
  • 原文地址:https://www.cnblogs.com/oyjngz101/p/6021264.html
Copyright © 2020-2023  润新知