Linux进程间通信

本文介绍了Linux下进程间通信的几种方式,重点讲解了共享内存的创建、链接、使用和删除步骤。同时,提到了kill命令及其不同信号的作用,如SIGTERM(15)和SIGKILL(9)对进程的不同影响。在结束进程时,通常先尝试SIGTERM,无效则使用SIGKILL强制结束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux进程间通信

管道、消息队列、共享内存、套接字、信号量

共享内存

共享内存是操作系统将进程之间共享的数据内存安排为同一块物理内存段,需要使用锁保证数据的一致性

  1. 创建/获取共享内存(shmget)
  2. 将共享内存链接到当前进程的地址空间(shmat)
  3. 通过指针范文共享内训
  4. 将共享内存从当前进程中分离(shmdt)
  5. 删除共享内存(shmctl)
kill 相关命令
[cxl@localhost ~]$ kill -l
 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	

img

  • kill -p 进程号:默认发送SIGTERM(15)给信号量,告诉进程需要自己关闭推出运行

    进程接受到该信号后可能会发生一下几种情况

    1. 程序立刻停止
    2. 当程序释放相应资源后再停止
    3. 程序仍然再继续执行,多半是程序正在等待I/O,SIGTREM被阻塞了
  • kill -9 -p 进程号:嘎松SIGKILL(9)给信号量,告诉进程你被终结了,立即退出(无条件终止);

    kill -9没有给进程机会做善后工作,包括:

    1. 关闭socket链接
    2. 清零临时文件
    3. 将自己将要被削=销毁的消息通知给子进程
    4. 重置自己的终止状态
  • Ctrl+c 相当于kill -2(SIGINT),Terminal interrupt,中断程序;

  • 通常应该先发送15,等一下若没效果,发送2,做不行发送1,再不行,就是程序太烂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值