linux 的 swapper 进程不能sleep,linux系统编程笔记

两个程序(没有任何关系)之间通信:

使用有名文件通信。管道文件可以解决文件偏移量的麻烦问题。

mkfifo(path,mode):

管道文件:

两种进程间通信的方式:无名管道和有名管道。

所有进程共享内核运行空间。

ftok(path,int项目id):给内核中的公共空间命名,参数path只要是系统所具有的路径就可以了,id可以随便给。

它返回的是:-1表示失败,

消息队列:

msgget();他需要ftok的返回值,返回-1表示失败。

(key,IPC_CREAT|0666):创建

(key,0):打开已有的

msgsnd():发送消息。

msgrcv():从消息队列中接受数据。

msgrv

msgctl()

发送数据的格式是有规定的:struct msgbuf{

long mtype;

char mtext[1];}

mtype是为内核缓冲区的标志,取的时候是根据该标志来取内容的。发消息的参数size_t是

该结构体的大小减去mtype的大小。

内核空间要释放:用宏IPC

shmget():创建共享内存;

shmad():访问内核地址空间。可以自己指定。

shmat(id,NULL,flag):NULL表示地址是内核指定的。flag可以是0;

该函数将映射地址返回。我们可以从该映射地址对内核空间进行访问。创建了一张映射表。

shmdt();取消地址映射

shmctl

IPC_RMID:删除内核中共享内存。

signal:异步通知。

ctrl+c:

kill -l:可以看到所有的信号。(64个)

kernel随时处理发送来的信号。

kill -num pid:可以给任何一个进程发送某个信号。

tcgetpgrp():

ctrl +z:SIGSTOP

ctrl +\:SIGQUIT

ctrl +s:SIG

SIGABRT:异常信号。

stty -a:编辑信号热键。

raise():

abort():

kill(pid,sig):

pid》0:

pid==0;给组进程发信号

pid==-1;给任何能接受到信号的进程发送信号

pid

sleep():

alarm():

signal():

SIG_KILL和SIG_STOP信号是不能忽略和修改(利用signal函数修改)的。

pause();用来阻塞等待任何一个信号。使用它必须保证阻塞等待的信号会到,否则造成程序的活死人。

setjmp():设置跳转点

longjmp():实现跳转。

信号处理实际上会屏蔽掉该信号本身。进入一个信号中会屏蔽掉该信号。

sigprocmask():信号屏蔽码。发送信号的动作是内核调用该信号处理函数。

信号只会缓冲一个。属于不可靠类型。

sigsetmask();

sigemptyset():清空信号屏蔽码

sigfillset():信号集全部置1;

sigaddset():添加信号。

sigdelset():删除。。。出信号。

sigismember():测试该信号集合中有无该信号。

sigsuspend():等待mask没有屏蔽的信号。

pause():等待任何一个信号。

sigpending():测试屏蔽过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值