eval & sleep
ltp-ddt can_loopback
source 'functions.sh';
interface='can0';
bitrate=;
do_cmd "do_can_loopback.sh -i $interface -b $bitrate";
init_txf=`get_can_stats.sh -s 'TXF'`;
init_rxf=`get_can_stats.sh -s 'RXF'`;
do_cmd "candump -d $interface";
do_cmd "cansequence -p $interface &"; suspend -i -p "mem";
prefinal_txf=`get_can_stats.sh -s 'TXF'`;
prefinal_rxf=`get_can_stats.sh -s 'RXF'`;
do_cmd "sleep 20";
final_txf=`get_can_stats.sh -s 'TXF'`;
final_rxf=`get_can_stats.sh -s 'RXF'`;
do_cmd "killall candump";
do_cmd "killall cansequence";
do_cmd "ip link set $interface down";
echo "TX init=$init_txf, prefinal=$prefinal_txf, final=$final_txf";
echo "RX init=$init_rxf, prefinal=$prefinal_rxf, final=$final_rxf";
if [ "$final_rxf" -gt "$prefinal_rxf" ] && [ "$prefinal_rxf" -gt "$init_rxf" ] && [ "$final_txf" -gt "$prefinal_txf" ] && [ "$prefinal_txf" -gt "$init_txf" ];
then exit ;
else exit ;
注意到第8行 do_cmd末尾有&
&作业控制,将命令变成背景下工作
注:do_cmd和suspend都是ltp-ddt的common script用来实现通用功能。
do_cmd通过eval执行命令
suspend通过sleep `random_ne0 $max_atime`
candump canconfig cansequence都是canutils are available at pengutronix website https://git.pengutronix.de/cgit/tools/canutils/
一开始没想通为什么final_>prefinal_>init_
将do_cmd和suspend中的实质提取出来,做了个测试程序。
sh01.sh 循环打印十次Hello World!中间延时1秒
#!/bin/bash
i=
while [ $i -lt ]
do
echo -e "Hello World!\a \n"
sleep
((i+=))
done
1.
#!/bin/sh
eval "./sh01.sh";
#sleep
echo "idyll"
顺序打印十次Hello World!最后输出idyll 注意eval最后没有&,所以顺序执行。
2.
#!/bin/sh
eval "./sh01.sh &";
#sleep
echo "idyll"
与1比多了个&,上下两条语句同时执行,所以先打印idyll,后输出十次Hello World!
3.
!/bin/sh
eval "./sh01.sh";
sleep
echo "idyll"
没有&,输出十次Hello World!等待5秒,在输出idyll
4.
#!/bin/sh
eval "./sh01.sh &";
sleep
echo "idyll"
输出五次Hello World!输出idyll,再输出五次Hello World!
总结下来&是实现命令的并行执行,&前面的语句在后台执行,继续后面的语句执行。
回到can_loopback
do_cmd "cansequence -p $interface &"应该是不停往can口发数据包,在后台运行,suspend -i 10 -p "mem"; suspend十次random time后去读收发stauts
sleep 20后再去读收发stauts,当然是越来越大,为啥要用suspend 里面好像设计了power manager的部分等板子回来后再细究。
eval & sleep的更多相关文章
- JSON.parse 与 eval() 对于解析json的问题
1.eval()与JSOn.parse的不同 eval() var c = 1; //全局变量 var jsonstr1 = '{"name":"a",&quo ...
- JSON.parse与eval的区别
JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别. 测试代码 var A = "{ a: 1 , b : 'hello' }"; var B ...
- JS eval()函数的一些见解
一.eval是基本使用规则 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 2 eval(string) 3 string必需.要计算的字符串,其中含有要计算的 ...
- Javascript动态执行JS(new Function与eval比较)
new Function与eval可以动态执行JS,只要把拼接好的JS方法,然后以字符串的形式传入到这两个函数,可以执行,其中new Function用在模板引擎比较多. 用 Function 类直接 ...
- Python:eval的妙用和滥用
时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...
- JSON中eval与parse的区别
json的的解析方法 (非原创) json的解析方法共有两种:eval_r() 和 JSON.parse(),使用方法如下: var jsonData = '{"data1":&q ...
- eval解析JSON中的注意点
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery ...
- jQuery Ajax请求(关于火狐下SyntaxError: missing ] after element list ajax返回json,var json = eval("("+data+")"); 报错)
$.ajax({ contentType: "application/x-www-form-urlencoded;charset=UTF-8" , type: &quo ...
- 被嫌弃的eval和with
× 目录 [1]eval [2]with 前面的话 eval和with经常被嫌弃,好像它们的存在就是错误.在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被斥为不规范,矫枉过 ...
- Global eval. What are the options?
David Flanagan最近写了一个关于全局eval的简单表达式,可以用一行式子表示: var geval = this.execScript || eval; 尽管看起来很简短,但是跨浏览器的兼 ...
随机推荐
- Vue-selller 饿了吗 - 准备工作
安装脚手架vue-cli npm install -g vue-cli 建立项目 vue init webpack sell(sell是项目名称) 进入项目目录 cd sell 可以看目录结构: ls ...
- 教你写Makefile(很全,含有工作经验的)
Makefile 值得一提的是,在Makefile中的命令,必须要以[Tab]键开始. 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了 ...
- (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
在linux环境下配置项目运行环境时,部署的人员都会分配一下内存,以保证程序正常的运行.其实在开发的时候(window系统),就已经涉及到内存分配了,只是这些参数有默认值,因此一直没有去重视它. 以M ...
- iOS 点击返回键崩溃的未解之谜
1. iOS8出现. 2.点击进去下一层View,然后返回,再返回上一级的视图的时候奔溃. 3.只有点击进去一下层View的时候才出现. 4. 报错的是给一个未知对象发送这个消息 gestureRec ...
- API 接口自动化测试框架
转自: https://testerhome.com/topics/3455 前言 接口自动化逐渐成为各大公司投入产出最高的测试技术.但是如何在版本迅速迭代过程中提高接口自动化的测试效率,仍然是大部分 ...
- 8.C#友元程序集----可访问性相关
在一个团队或者公司中,一个人开发出来的程序集中的类的可见性有public,private和internal, public:对所有程序集可见,就是说如果拿到程序集.DLL文件,那么类就被公开了. pr ...
- Cocos Creator 获取节点的方式
1.通过find方式获取//获取节点 var node=cc.find("Canvas/logo"); //获取精灵组件 var sprite=node.getComponent( ...
- cocos2d-x 暂停/恢复 与场景相关(SceneGraph类型)的监听器
开发过程中,我们经常会遇到这样的情况:想要让一个Layer中所有的Node对象的事件都停止响应. 在响应用户事件后,又要恢复该Layer的所有事件响应. 如: 用户想要显示一个模式对话框,显示对话框后 ...
- 巧用CurrentThread.Name来统一标识日志记录(完结篇)
▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...
- sqli-labs(四)
第七关: 输入?id=1 页面显示如下,可以看出这关大概是锻炼利用sql来写入一句话木马. 这里说我下我的探测流程(主要是为了知道后台的sql是怎样拼凑的): 输入?id=1' 报错 说明后台是用的 ...