赞
踩
// $ locate pipe_fs_i.h
struct pipe_inode_info {
wait_queue_head_t wait;
char *base; //指向管道缓存首地址
unsigned int len; //管道缓存使用的长度
unsigned int start; //读缓存开始的位置
unsigned int readers;
unsigned int writers;
unsigned int waiting_writers;
unsigned int r_counter;
unsigned int w_counter;
struct fasync_struct *fasync_readers;
struct fasync_struct *fasync_writers;
};
管道是一个文件 (pipefs):
函数原型:
FIFO文件,有文件名字
具有写入原子性、可同时对FIFO进行写操作,如日志系统/var/log
First In First Out:最先被写入FIFO的数据,最先被读出来
FIFO与PIPE的区别和联系
IPC对象的基本概念
创建IPC key的三种方法
使用基本流程
不同进程之间的点对点通信
引用方式
降低系统耦合:
优势
操作流程
struct sembuf {
unsigned short sem_num; /* semaphore index in array */
short sem_op; /* semaphore operation */
short sem_flg; /* operation flags */
};
struct sigevent {
int sigev_notify; /* Notification method */
int sigev_signo; /* Notification signal */
union sigval sigev_value; /* Data passed with notification */
void (*sigev_notify_function) (union sigval);/* Function used for thread notification (SIGEV_THREAD) */
void *sigev_notify_attributes; /* Attributes for notification thread (SIGEV_THREAD) */
pid_t sigev_notify_thread_id; /* ID of thread to signal (SIGEV_THREAD_ID) */
};
查看设置消息队列的属性
区别和联系
所有共享内存带来的问题:同步
解决方法
缺省行为
捕获信号并执行信号注册的handler
系统调用:kill
系统调用:pause
系统调用:alarm
系统调用:setitimer
int sum ;
int add (int count)
{
static int sum = 0;
For (i from 0 to count)
sum = sum + i;
}
满足条件
标准信号及其不可靠性
内核对信号的处理
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
优缺点
eventfd API
eventfd操作API
Libdbus
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。