进程:
pid_t pid =fork() >0----父进程;==0------紫禁城
wait() 回收子进程的资源,阻塞等待,任意子进程
waitpid() 指定等待特定某个PID进程退出
getpid()/getppid() 获取子进程、父进程PID
execl(“ls -l”,“ls”,"-l",NULL)执行命令,覆盖当前进程的内存
systerm()==fork()–>>execl() — l:列表
execv ------v:数组
exevp ------p:path环境变量
exit(int status) 退出值返回到waith函数的参数指针所在变量的低八位(0-255)
IPC进程间的通信:管道,信号,信号量,套接字,消息队列,共享内存
无名管道pipe():fd[2]----fd[0]读 fd[1]----写 半双工(读写分开)
有名管道mkfifo():
信号:kill(pid,信号) ,signal(信号,func),sigqueue(),signaction(),
kill -9 /kill -19 不可忽略
阻塞信号:sigpromask(SIG) SIG_BLOCK /SIG_UNBLOCK阻塞或解除阻塞
共享内存:
创建:shmget(key,size,shmflg(权限)),
映射:shmat()
解除映射:shmdt()
设置属性:shmctl()
消息队列:
msgget
msgsnd
msgrcv
信号量 semget(key,信号量元素个数,权限)
semop(信号量,信号量操作结构体数组,结构体时更要注意)//PV操作
struct sembuf
{
unsigned short sem_num;//数组下标
short sem_op;操作参数 1、-1
short sem_flg;//0
}
POSIX有名信号量
sem_open()创建
sem_wait()P操作
sem_post()V操作
sem_close()关闭
sem_unlink()删除
POSIX无名信号量
sem_init(信号量指针,(0是线程间使用,1是进程间使用),初始值)//初始化
sem_destroy()//销毁