接触qnx两天,拿到手上的板子bsp软件已经被定制过,将启动脚本的位置和文件系统做了大量更改

如下是几个命令来处理退出和恢复过程

由于tinyRPC接口不提供退出接口,商务又不允许改接口,就采用低级的风险的退出方式exit(),远端服务端使用了ip,port转发等鬼东西,socket端口访问总是无法访问,于是用ping来查询远程机器是否启动来代替查询远程tinyRPC服务器是否运行,但exit退出方法会引起内存泄漏,从代码端检测到连接断开退出进程的写法

void t_resume()
{
//  TSocketConnect::Inst()->SetIPAddr("192.168.1.5", 32769);
//  std::cout << "[bgk] set ipaddr...192.168.1.5....<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl;
//
//  while(1)
//  {
//      sleep(10);
//      std::cout << "[bgk] sleep 10s, connect_sts = " << TSocketConnect::Inst()->SocketConnectStatus() << endl;
//
//      if (!TSocketConnect::Inst()->SocketConnectStatus())
//      {
//          // TRPCClientMgr::Inst()->Exit();
//          // break;
//      }
//  }
//  // exit(1);FILE * fp;char buffer[20];char cmp[20];while(1){sleep(10);memset(buffer, 0, 20);memset(cmp, 0, 20);fp = popen("echo $(echo `ping -c 1 10.255.255.100`) | grep 'time=' ", "r");fgets(buffer, sizeof(buffer), fp);// std::cout << buffer << std::endl;pclose(fp);if(!memcmp(cmp, buffer, 20)){std::cout << "exit tinyrpc_service" << std::endl;exit(1);}}}

在启动脚本了做个检测,发现远程服务器连接上之后再发起tinyRPC客户端的连接,想用telnet来过滤,命令没有,ssh命令没有,好在加命令相对简单,但加上去之后发现telnet和socket一样无法访问远程端口,很多linux上稳定运行的工具都没法使用,最后只能采用极端的方法了,在qnx启动脚本里运行一个后台shell脚本来监控远程服务器,一旦起来就运行tinyRPC

#!/bin/sh# Import environment
basepath=$(cd `dirname $0`; pwd -P). $basepath/env_setup.shwhile true
dosleep 3result=$(echo `ps -e -o pid,comm | grep "tinyrpc_service" | grep -v PID | grep -v grep`)# echo $resultif [[ "$result" != "" ]]then# echo "tinyrpc runing"sleep 1elseresult=$(echo $(echo `ping -c 1 10.255.255.100`) | grep "time=")if [ "${result}" != "" ]thenecho "tinyrpc resume"tinyrpc_service &fifi
done

现有的指令得到两列结果(602151 vcapture-test)
如果想得到单独的pid号,可以在加awk指令过滤(602151)

echo `ps -e -o pid,comm | grep "vcapture-test" | grep -v PID | grep -v grep | awk '{print $1}'`

其他:

在qnx文件系统里加命令方法,在src\hardware\startup\boards\dra72x\evm\build目录下general commands段中加入需要的命令

telnet访问端口脚本如下,linux上很好用,但qnx用起来有点莫名其妙,感觉不是每次返回都是确定了

#!/bin/shnum=`echo -n "\n"|telnet 127.0.0.1 32769|grep Connected|wc -l`if [ $num -eq 1 ]; thenecho "network is open."
elseecho "network is closed."
fi

Socket端口在Linux上默认打开方式为非阻塞的,但在Qnx的默认打开方式为阻塞的,解决方法为设置非阻塞标志位

int sockfd;sockfd = socket(AF_INET, SOCK_STREAM, 0);flags = fcntl(sockfd, F_GETFL, 0);
fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);

qnx挂死恢复脚本简易写法相关推荐

  1. linux 网卡自动挂死,shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  2. Python脚本语言写法

    Python脚本语言写法 脚本语言的开始行,是指文件中的代码用什么可执行程序去运行它,就这么简单. #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的pyth ...

  3. 一次挂死(hang)的处理过程及经验

    前言: CPU占用率低,内存还有许多空余,但网站无法响应,这就是网站挂死,通常也叫做hang.这种情况对于我这样既是CEO,又是CTO,还兼职扫地洗碗的个人站长来说根本就是家常便饭.以下是一次处理ha ...

  4. i2c- sda挂死分析

    I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA).I2C是总线结构,1个Master,1个或多个Sla ...

  5. 记一次 .NET WPF布草管理系统 挂死分析

    一:背景 1. 讲故事 这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨...嗨,也不知道 ...

  6. redis 清空缓存_「镜头回放」简直了!spring中清除redis缓存导致应用挂死

    异常场景 springWeb应用一直运行正常,同事最近反应,每次版本更新完毕,刷新缓存,就会导致应用挂死.只有重启redis应用才恢复正常. 项目概况 springWeb项目,常用配置表做了redis ...

  7. MySQL 连接挂死了!该如何排查?

    开发者(KaiFaX) 面向全栈工程师的开发者 专注于前端.Java/Python/Go/PHP的技术社区 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感到头疼,一来这类 ...

  8. MySQL 连接为什么挂死了?

    [摘要] 本次分享的是一次关于 MySQL 高可用问题的定位过程,其中曲折颇多但问题本身却比较有些代表性,遂将其记录以供参考. 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令 ...

  9. VxWorks任务挂死实战分析

    目录 背景描述 根本原因 分析过程 背景描述 操作系统:VxWorks 5.5 CPU:MIPS32 74Kc内核CPU 现象描述:联调代码时发现应用层代码调用以下接口函数必现任务挂死,检查代码发现入 ...

最新文章

  1. Django Python:完整的BUNDLE + Django真实项目2021
  2. 河南信息工程学校计算机协会申请书,协会成立申请书范文15篇.docx
  3. 机器人学一些概念1——自由度冗余,映射和操作算子
  4. ssm打印sql如何开启_mybatis怎么配置log4j打印出sql语句
  5. 战略分析思路——商业模式及沙盘推演
  6. 又是一年国庆假期最后一天
  7. c语言怎样用格式化文件存储,如何用格式化的方式读写文件
  8. 美来临公司商业模式分析,公司是不昨的
  9. android获取手机联系人信息(电话,邮箱,姓名,头像)
  10. 机械键盘POKER2的硬编程
  11. xshell上传文件插件lrzsz
  12. WIN10安装cad2006提示无权限安装的解决办法
  13. 第1章思维导图图片版
  14. CSDN博客创建目录的方法
  15. 【TypeScript】TS与Vue
  16. 10 令牌颁发 OAuth2TokenEndpointFilter
  17. 四、完成Teigha.net库对CAD看图的放大/缩小/移动实体等界面操作,图层管理器,以及CAD文件布局的切换功能
  18. DT内核圆柱模板行业站点主动tags三项主动推送插件
  19. scilab 求微分_SCILAB第六章微积分应用.PDF
  20. MySQL Win7 64位 下载、安装与配置图文教程

热门文章

  1. 西安~培养我的文艺范儿
  2. 为什么黑客都用Linux系统?原来是这四大原因
  3. 容器云时代,Commvault的变与不变
  4. math: 卡尔曼滤波算法原理以及python实例
  5. Word2vec之CBOW 模型
  6. 拜师————python基础入门——守破离学习法,海龟绘图,画出奥运五环图,day3
  7. MPC5748G开发笔记-----S32DS提示The target may have entered reset escalation
  8. 女老板为何因户外广告牌性贿赂城管?
  9. 不礼让行人怎么抓拍的_去交警队看看,不礼让行人抓拍如何界定?
  10. C语言 循环打印星星