c++ - 删除旧的信号量 systemV
问题描述
本质上,我希望当我的程序启动时执行以下操作
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
推荐阅读
- haskell - 我可以在我的 stack.yaml 中省略或指定“解析器”的“虚拟”值吗
- javascript - 根据 DIV 文本在数组中查找索引
- cmake - CLion工程文件可以默认存放在指定文件夹吗?
- r - 如何逐个元素地组合数据框中的两列?
- java - Java REST 调用从 eclipse 和 jar 执行给出不同的响应
- matlab - 用于生成某些形状的一些有符号距离场的 Matlab 代码
- pip - Pip 安装问题 EnvironmentError
- c - 检测是否只给出整数的程序进入无限循环
- graphql - AWS Appsync:如何创建一个解析器来检索标识符数组的详细信息?
- asp.net-mvc - 如何在 asp.net MVC 的单独程序集中从 Controller 读取 Cookie