本质上,我希望当我的程序开始执行类似于
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脚本?
发布于 2022-01-07 14:53:04
尝试如下:将此文件保存为" 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; donehttps://stackoverflow.com/questions/59585154
复制相似问题