删除旧的信号量系统V

Removing old semaphores systemV

本文关键字:系统 信号量 删除      更新时间:2023-10-16

>本质上,我希望当我的程序启动时执行类似

set IPCS_S = ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $USERNAME | cut -f2 -d" "
for id in $IPCS_S; do
ipcrm -s $id;
done

我希望这样做以确保我不会打开剩余的信号量(异常终止后保持打开状态的信号量(。

有没有办法使用本机C++代码来做到这一点?还是我最好的选择是调用外部 shell 脚本?

试试这个: 将此文件另存为"removeipc.sh",然后保存为"chmod 777 removeipc.sh",

#!/bin/bash
ME=`whoami`
IPCS_S=`ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_M=`ipcs -m | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_Q=`ipcs -q | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`

for id in $IPCS_M; do   echo $id   ipcrm -m $id; done
for id in $IPCS_S; do   echo $id   ipcrm -s $id; done
for id in $IPCS_Q; do   echo $id   ipcrm -q $id; done