标签:
参考:
operatingfocus.bokee.com/3327857.html
www.oschina.net/code/snippet_237505_8646
www.cnblogs.com/techdoc/archive/2010/12/22/1913521.html
一.多进程编程里常用的函数。
1.pid_t fork();
创建子进程
2.int execl(const char * path,const char * arg,....);
path是可执行文件路径, 头文件#include<unistd.h>,该文件时传递过去的argv(0)、argv[1]……,最后一个参数必须用空指针(NULL)作结束。
3.int execlp(const char * file,const char * arg,……);
execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件。
4.int execv (const char * path, char * const argv[ ]);
path是文件路径
5.pid_t getpid(void);
getpid()用来取得目前进程的进程识别码
6.pid_t getppid(void);
getppid()用来取得目前进程的父进程识别码。
7.void setsid(void);
如 果调用此函数的进程不是一个进程组的组长,则此函数就会创建一个新会话,该进程变成会话的首进程,然后该进程成为一个新进程组的组长进程,该进程没有控制 终端。因为会话首进程是具有唯一进程ID的单个进程,所以可以将会话首进程的进程ID视为会话Id。此函数配合umask()可将进程变成守护进程。
8.pid_t wait(int * status);
功能:阻塞该进程,直到其某个子进程退出.
9.pid_t wait (int * status);
#include<sys/types.h>,#include<sys/wait.h>。wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。回收僵尸进程
10.pid_t waitpid(pid_t pid,int * status,int options);
参数 pid 为欲等待的子进程识别码,其他数值意义如下:
参数 option 可以为 WNOHANG, 如果没有任何已经结束的子进程则马上返回, 不予以等待。
二.进程间的通信
1.信号量
1) int sem_wait(sem_t *sem);
//P操作,若是信号量大于零则减一,否则阻塞在该函数位置等待.
2)
int sem_post(sem_t *sem);
//V操作,信号量加一
3) sem_t *sem_open(const char *name, int oflag);
//打开信号量,flag参数与打开普通文件的标记一样
4) sem_t *(const char *name, int oflag,mode_t mode, unsigned int value);
//创建并打开信号量,value参数指的是信号量的初始值oflag参数可以是0、O_CREAT(创建一个信号灯)或O_CREAT|O_EXCL(如果没有指定的信号灯就创建),
其中mode参数指定权限位(00777).
5) int sem_unlink(const char *name);
//删除系统创建的信号量
6) int sem_close(sem_t *sem);
//关闭彻底销毁信号量
2.管道
int pipe(int filedis[2]);
头文件#include <unistd.h>,参数filedis返回两个文件描述符:filedes[0]为读而打开,filedes[1]为写而打开。filedes[1]的输出是filedes[0]的输入。
3.内存共享
#include <sys/mman.h>
void *mmap(void *start, size_t length, int prot, int flags,int fd, off_t offset);
int munmap(void *start, size_t length);
例子:
p_map = (people*)mmap(NULL,sizeof(people)*10,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
p_map=(people*)mmap(NULL,sizeof(people)*10,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);//匿名,适合父子进程之间
munmap( p_map,sizeof(people)*10 );
标签:
原文地址:http://www.cnblogs.com/jinfei/p/5746867.html