Linux学习笔记--进程
时间:2010-04-29 来源:wanpengcoder
Linux学习笔记--进程
进程的产生:
1.进程号:
getpid()---当前进程id
getppid()---父进程id
2.fork()---复制进程,子进程id与父进程id不同,内存等与父进程不同,其他与父进程共享。
3.system()---当这个函数中的命令执行完毕之后才能继续本进程,也就是说它可以阻塞本进程。
4.exec()函数系列---新进程代替原进程,只有id与原id相同。
---普遍用法:使用fork()分岔进程,在新进程中调用exec()函数,这样exec()就占用了原来系统资源来运行(id没换但内容换了,挂得还是羊头卖得却是狗日)
5.init---进程都是有init直接或间接fork()出来的。
进程间的通信:
1.管道:
int pipe(int filedes[2])---创建管道,如进程A、B,则每个进程都有读和写两个描述符,在通信的时候关闭不用的那个。
命名管道 mkfifo
2.消息队列:
ftok()---键值构造函数,下面的函数需要这里的键值
msgget()---创建一个消息队列或者访问一个现有队列。
msgsnd()---向队列传递消息
msgrcv()---接收消息队列中的消息
msgclt()---向内核发送一个cmd命令,内核根据此来判断进行何种操作。
信号量:控制多个进程共享资源的访问。
semget()---新建信号量,返回信号的id
semmlt()---发送命令建立value个初始值的信号量
semop()---向信号量发送命令
semctl()---信号量控制的其他操作
共享内存:通过共享内存区域实现进程之间的通信
shmget()---创建一个新的共享内存段或者访问一个现有的共享内存段,返回段标识符
shmat()---获取共享内存的地址
shmdt()---删除,实际上是断开,断开后shmid_ds的shm_nattch-1,当==0时真正的删除内存段
shmctl()---对共享内存的控制
信号:最为古老的进程之间的通信方式
进程可以屏蔽大多数信号,除了SIGSTOP SIGKILL
signal()---信号获取函数,对此信号挂接用户自己的处理函数
很明显,上面这些很多函数的名字都是有规律可循的,用法也差不多……
好了,明天继续---线程
进程的产生:
1.进程号:
getpid()---当前进程id
getppid()---父进程id
2.fork()---复制进程,子进程id与父进程id不同,内存等与父进程不同,其他与父进程共享。
3.system()---当这个函数中的命令执行完毕之后才能继续本进程,也就是说它可以阻塞本进程。
4.exec()函数系列---新进程代替原进程,只有id与原id相同。
---普遍用法:使用fork()分岔进程,在新进程中调用exec()函数,这样exec()就占用了原来系统资源来运行(id没换但内容换了,挂得还是羊头卖得却是狗日)
5.init---进程都是有init直接或间接fork()出来的。
进程间的通信:
1.管道:
int pipe(int filedes[2])---创建管道,如进程A、B,则每个进程都有读和写两个描述符,在通信的时候关闭不用的那个。
命名管道 mkfifo
2.消息队列:
ftok()---键值构造函数,下面的函数需要这里的键值
msgget()---创建一个消息队列或者访问一个现有队列。
msgsnd()---向队列传递消息
msgrcv()---接收消息队列中的消息
msgclt()---向内核发送一个cmd命令,内核根据此来判断进行何种操作。
信号量:控制多个进程共享资源的访问。
semget()---新建信号量,返回信号的id
semmlt()---发送命令建立value个初始值的信号量
semop()---向信号量发送命令
semctl()---信号量控制的其他操作
共享内存:通过共享内存区域实现进程之间的通信
shmget()---创建一个新的共享内存段或者访问一个现有的共享内存段,返回段标识符
shmat()---获取共享内存的地址
shmdt()---删除,实际上是断开,断开后shmid_ds的shm_nattch-1,当==0时真正的删除内存段
shmctl()---对共享内存的控制
信号:最为古老的进程之间的通信方式
进程可以屏蔽大多数信号,除了SIGSTOP SIGKILL
signal()---信号获取函数,对此信号挂接用户自己的处理函数
很明显,上面这些很多函数的名字都是有规律可循的,用法也差不多……
好了,明天继续---线程
相关阅读 更多 +