前言
一、进程间通讯
共有两大类通讯方式
二、通讯方式
管道:文件、视频、压缩包都可以发送 同步
信号:只是一个通知 异步
1.无名管道
1.无名管道:相当于在内核空间建设一个文件缓存区,在进程间进行单向数据传递,创建一个文件描述符,一端只能读,一端只能写。
只能用于具有亲缘关系之间的进程间通讯
函数接口:
(1)int pipe(int pipefd[2]);
功能:
创建无名管道
参数:
数组的首地址
返回值:
成功返回0;
失败返回-1;
(2)特性
A.读特性
管道中至少存在一个写段
读:管道中存在数据,直接读出
管道中没有数据等待直到有数据写入才读出,会阻塞等待
管道中没有写端
读:管道中存在数据,直接读出
管道中没有数据,直接结束,不会等待
B:写特性
管道中至少有一个读端
写:管道如果没有写满(64k),则会继续写入
管道如果满了则会阻塞等待,直到数据被读出,才能继续写入。
管道中没有读端
写:会触发管道破裂,收到管道破裂信号,进程异常结束
2.有名管道
2.有名管道
读写两端必须同时加入
1.创建管道
int mkfifo(const char *pathname, mode_t mode);
功能:
创建有名管道
参数:
pathname:管道名字
mode:权限
返回值:
成功:返回0;
失败:返回-1
3.信号
信号是一种异步通信方式
1.信号类型
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
2.信号处理方式
1.缺省 按照默认方式处理信号
2.忽略 不处理信号
3. 捕捉 按照执行方式处理
3.特殊信号
(1)可以从键盘上发送得信号
SIGINT ctrl + c 程序结束
SIGQUIT ctrl + \
SIGTSTP ctrl + z 任务挂起
(2)无法被捕捉的信号,收到必须响应
SIGKILL 杀死
SIGSTOP 暂停
(3)常用信号
SIGSEGV 段错误
SIGPIPE 管道破裂
SIGCHLD 子进程结束 父进程会收到SIGCHLD信号,用于回收子进程空间
SIGIO 异步IO信号
4.修改信号处理方式
函数接口
(1)
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
功能:
修改信号的处理方式
参数:
signum修改信号的编号
信号处理函数:
SIG_DFL,缺省 按照默认是方式进行处理
SIG_IGN,忽略
返回值:
成功返回上一次注册处理函数地址
失败返回SIG_ERR
(2)
int raise(int sig)
功能:
给调用进程发送信号
参数:
sig:信号的编号
返回值
成功返回0
失败
返回非0
(3)int pause(void)
功能:
让任务挂起
参数:
缺省
返回值:
当收到信号时返回-1
(4)unsigned int alarm(unsigned int seconds)
功能:
给调用进程在seconds秒之后发送SIGALARM
参数:
seconds;秒数值
返回值:
成功返回上一次定时剩余得秒数
失败返回
sleep = pause + alarm
(5)int kill(pid_t pid, int sig);
功能:
给进程发送信号
参数:
pid:进程得pid号
sig:信号的编号
返回值
成功返回0;
失败返回-1;
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。