进程和线程新增

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:等待。

原文地址:https://www.cnblogs.com/oyjngz101/p/6021264.html