linux 进城 管道丢数据,linux – 使用命名管道与bash – 数据丢失的问题

有人在线搜索,发现简单的“教程”使用命名管道.但是,当我做任何后台工作时,我似乎失去了大量的数据.

[[编辑:找到一个更简单的解决方案,看到回复帖子.所以我提出的问题现在是学术性的 – 万一有人想要一个工作服务器]]

使用Ubuntu 10.04与Linux 2.6.32-25-generic#45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU / Linux

GNU bash,版本4.1.5(1)-release(x86_64-pc-linux-gnu).

我的bash功能是:

function jqs

{

pipe=/tmp/__job_control_manager__

trap "rm -f $pipe; exit" EXIT SIGKILL

if [[ ! -p "$pipe" ]]; then

mkfifo "$pipe"

fi

while true

do

if read txt

then

echo "$(date +'%Y'): new text is [[$txt]]"

if [[ "$txt" == 'quit' ]]

then

break

fi

fi

done

}

我在后台运行它:

> jqs&

[1] 5336

现在我喂它了

for i in 1 2 3 4 5 6 7 8

do

(echo aaa$i > /tmp/__job_control_manager__ && echo success$i &)

done

输出不一致.

我经常得不到所有的成功回响.

我得到最多的新的文本回声成功回声,有时较少.

如果我删除’&’从’feed’,它似乎工作,但我被阻止,直到输出被读取.因此,我想让子进程被阻止,但不是主进程.

目的是编写一个简单的作业控制脚本,所以我最多可以并行运行10个作业,并排队休息以备后续处理,但可靠地知道它们运行.

全职工作经理如下:

function jq_manage

{

export __gn__="$1"

pipe=/tmp/__job_control_manager_"$__gn__"__

trap "rm -f $pipe" EXIT

trap "break" SIGKILL

if [[ ! -p "$pipe" ]]; then

mkfifo "$pipe"

fi

while true

do

date

jobs

if (($(jobs | egrep "Running.*echo '%#_Group_#%_$__gn__'" | wc -l) < $__jN__))

then

echo "Waiting for new job"

if read new_job

then

echo "new job is [[$new_job]]"

if [[ "$new_job" == 'quit' ]]

then

break

fi

echo "In group $__gn__, starting job $new_job"

eval "(echo '%#_Group_#%_$__gn__' > /dev/null; $new_job) &"

fi

else

sleep 3

fi

done

}

function jq

{

# __gn__ = first parameter to this function, the job group name (the pool within which to allocate __jN__ jobs)

# __jN__ = second parameter to this function, the maximum of job numbers to run concurrently

export __gn__="$1"

shift

export __jN__="$1"

shift

export __jq__=$(jobs | egrep "Running.*echo '%#_GroupQueue_#%_$__gn__'" | wc -l)

if (($__jq__ '

then

eval "(echo '%#_GroupQueue_#%_$__gn__' > /dev/null; jq_manage $__gn__) &"

fi

pipe=/tmp/__job_control_manager_"$__gn__"__

echo $@ >$pipe

}

调用

jq

jq abc 2 sleep 20

将开始一个过程.

那部分工作正常.开始第二个,罚款.

一个接一个的手似乎工作正常.

但是,在一个循环中,10开始似乎失去了系统,就像上面的更简单的例子.

任何关于我能够做的解决IPC数据的明显损失的提示将不胜感激.

问候,

阿兰.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wso2 安装_WSO2注册表安装简介

wso2 安装这篇文章基于有关注册表安装及其工作原理等常见问题。以下是人们提出的主要问题&#xff1a; 1&#xff09;。 安装如何工作&#xff1f; 2&#xff09;。 Config Registry和Governance Registry有什么区别&#xff1f; 3&#xff09;。 可以将H2以外的数据库用于本…

Servlet配置错误处理页面/配置错误页面

写一个错误处理页面 error.html <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>Insert title here</title> </head> <body style"font-size:30px;color:red;&quo…

azdb文件怎么打开_AZDBExplorerSvcs.dll

我该如何安装从金山毒霸下载的DLL文件&#xff1f;一&#xff1a;1、从金山毒霸下载压缩文件。2、将DLL文件解压到电脑上的某个地方。3、把该文件跟要求使用它的程序放在同一路径上。注意32位程序需要使用32位的DLL文件&#xff0c;64位程序需要使用64位的DLL文件。否则会出现0…

linux添加windows网络打印机,Linux Mint如何添加windows分享的网络打印机?

1.安装sambasudo apt-get install samba2.找到系统打印机选项通过 Menu-->>控制中心-->>系统管理找到 Printers选项&#xff0c;双击打开。3.核对windows打印机名并添加在如上图的画面中&#xff0c;点击 “Network Printer”&#xff0c;再点击“windows Printer …

5菜鸟教程_excel图文教程:应用PQ工具进行数据整理

编按&#xff1a;哈喽&#xff0c;大家好&#xff01;在日常工作中&#xff0c;我们经常会与数据打交道&#xff0c;那整理数据自然也是一件习以为常的事。但就是这么一件天天都会做的事&#xff0c;却让很多人压力山大&#xff0c;这不&#xff0c;又有一位小伙伴遇到问题了&a…

MyEclipse 如何将 jar 包导入项目中

步骤 1 项目右键->build path( 构建路径 )->configure build path(配置构建路径) 步骤 2 Java Build Path --> libraries(库) --> Add External JARs --> 选择 ojdbc14_11g.jar 在项目中出现 Referenced Libraries , 则完成

redis lettuce_Redis Client Lettuce 5 GA发布

redis lettuce经过13个月的开发阶段和208张已解决的故障单&#xff0c;我很高兴宣布Lettuce 5.0全面上市。 这是一个主要发行版&#xff0c;带有一些重大更改&#xff0c;新的有趣功能以及Java 9兼容性。 从Maven Central获取发行版 <dependency><groupId>io.let…

c语言限制字符数,C语言中“不受限制”的字符串函数总结.pdf

C语语言言中中“不不受受限限制制”的的字字符符串串函函数数总总结结“不不受受限限制制的的“字字符符串串函函数数按 《C和指针》中所说&#xff0c;那些常用的字符串函数都是“不是限制的”&#xff0c;就是说 们只能通过寻找字符串末尾的NULL来判断字符串的长度。strlenst…

测试类/测试包/演示类/演示包的命名规范/命名规则

文章目录1.测试类的命名规范2.测试程序的包命名规范3.测试方法命名规范4.演示类/范例类的命名规范1.测试类的命名规范 测试类命名规则&#xff1a;Test 要测试的类名称 测试类命名规则&#xff1a;功能名称或者类名 Test ✓ 2.测试程序的包命名规范 测试程序包的命名规则是…

mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、\、%

在MyBatis Plus中&#xff0c;使用like查询特殊字符_&#xff0c;\&#xff0c;%时会出现以下情况&#xff1a;1、查询下划线_&#xff0c;sql语句会变为"%_%"&#xff0c;会导致返回所有结果。在MySQL中下划线“_”表示匹配单个字符&#xff0c;所以结合后“%_%”就…

移动端apm关键指标_3个经常被忽视的APM关键功能

移动端apm关键指标APM核心功能已不再足够。 市场领先的应用程序超越了所有人&#xff0c;树立了其他人必须匹配的新标准。 每当任何针对消费者或企业的Web应用程序达到新的性能高峰时&#xff0c;都会为用户期望值设定基准。 这可能不公平或不合理&#xff0c;但这就是市场运作…

Java包命名规则/包命名规范

文章目录个人项目的包命名规则团队项目的包命名规则包前缀说明包名通常是一个单词&#xff0c;且单词通常是名词&#xff0c;字母全部小写&#xff0c;如果多个单词使用下划线连接。 个人项目的包命名规则 individual&#xff08;个体&#xff09;&#xff1a;指个体项目&…

程序设计基础(c语言)复习大纲,《程序设计基础-C》复习大纲.doc

《程序设计基础-C》复习大纲.doc《程序设计基础-C》复习大纲第一部分 期末考核说明一、期末考试要求考核学生是否掌握C语言的基本概念&#xff0c;能否较熟练运用Visual C工具进行程序设计。具体考核要求分为以下几个层次&#xff1a;掌握C的基本语法结构&#xff1b;掌握基本的…

单容水箱液位pid控制实验报告_单容水箱液位PID控制系统

图7-1、单容水箱液位控制系统的方块图图7-1为单容水箱液位控制系统。这是一个单回路反馈控制系统&#xff0c;它的控制任务是使水箱液位等于给定值所要求的高度&#xff1b;并减小或消除来自系统内部或外部扰动的影响。单回路控制系统由于结构简单、投资省、操作方便、且能满足…

oauth 使用令牌_使用OAuth2令牌的安全REST服务

oauth 使用令牌1.简介 在本教程中&#xff0c;我们将介绍如何将Spring Security与OAuth结合使用以保护REST服务。 在演示应用程序中&#xff0c;可以使用路径模式&#xff08; / api / ** &#xff09;访问服务器上受保护的REST资源&#xff0c;以便基于该路径的请求URL映射到不…

如何解析属性文件(properties)获取键值对的值?

文章目录创建属性文件解析属性文件获取数据使用类加载器使用 File 对象创建属性文件 新建 db-oracle.properties , 存放项目必须使用到的参数&#xff1a; driver oracle.jdbc.driver.OracleDriver url jdbc:oracle:thin:192.168.0.23:1521:htlwk username openlab passwo…

微信小程序 高德地图知道两点求道路_微信小程序——计算2点之间的距离

关于计算2点之间的距离都依赖了腾讯地图&#xff0c;所以请先在下面具体讲计算2点之间距离的方法。方法一&#xff1a;getPosition: function() {var that this;wx.getLocation({success:function(res) {that.setData({fromLng: res.longitude,fromLat: res.latitude})}})},2.…

c语言char指针用法,整理C语言中各种类型指针的特性与用法

2016指针为什么要区分类型&#xff1a;在同一种编译器环境下,一个指针变量所占用的内存空间是固定的。比如,在16位编译器环境 下,任何一个指针变量都只占用8个字节,并不会随所指向变量的类型而改变。虽然所有的指针都只占8个字节,但不同类型的变量却占不同的字节数。一个int占用…

java message_Java Message System简介

java messageJava消息系统 在本文中&#xff0c;我将讨论面向消息的中间件 &#xff08;MOM&#xff09;以及JMS如何在Enterprise Java中实现它。 此外&#xff0c;我还将讨论适合JMS使用的典型用例以及用于讨论消息传递解决方案的不同术语&#xff0c;例如Publisher / Sender …

c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码

/**程序名称&#xff1a;贪吃蛇v2.1*程序描述&#xff1a;一个简易的贪吃蛇小游戏*版本信息&#xff1a;v2.1*v1.1版本更新&#xff1a;1&#xff1a;加入菜单选择项*v1.2版本更新&#xff1a;1&#xff1a;修复菜单选择bug*v1.3班本更新&#xff1a;1&#xff1a;加入难度选择…