`
cloudmail
  • 浏览: 271024 次
  • 来自: 广州
社区版块
存档分类
最新评论

Linux Shell实现"多进程"编程

阅读更多

 

单进程模式代码:

 

#!/bin/sh

plus=0;
t1=`date +%s`
sub_fun()
{
	index="${1}"
	for i in {1..4}; do
		echo "sub_fun $index, loop:$i"
		plus=$[$plus + 1]
		sleep 1
	done
}

echo "Begin run on time: `date +%T`"
for j in {1..3}; do
{
	sub_fun "$j"
}
done

t2=`date +%s`
echo "End run on time: `date +%T`, plus sum:$plus, run time:$[ $t2 - $t1 ]"
 

 

 

单进程运行结果:

 

Begin run on time: 18:56:01
sub_fun 1, loop:1
sub_fun 1, loop:2
sub_fun 1, loop:3
sub_fun 1, loop:4
sub_fun 2, loop:1
sub_fun 2, loop:2
sub_fun 2, loop:3
sub_fun 2, loop:4
sub_fun 3, loop:1
sub_fun 3, loop:2
sub_fun 3, loop:3
sub_fun 3, loop:4
End run on time: 18:56:13, plus sum:12, run time:12
 

 

 

多进程模式代码:

 

#!/bin/sh

plus=0;
t1=`date +%s`
file_path="file.eml"
sub_fun()
{
	index="${1}"
	file_path="${2}"
	for i in {1..4}; do
		echo "[`date +%T`]sub_fun $index, file:$file_path, loop:$i"
		plus=$[$plus + 1]
		sleep 1
	done
}

echo "Begin run on time: `date +%T`"
for j in {1..3}; do
{
	sub_fun "$j" "$file_path$j"
} &
done

wait
t2=`date +%s`
echo "End run on time: `date +%T`, plus sum:$plus, run time:$[ $t2 - $t1 ]"
 

 

 

多进程运行结果:

 

Begin run on time: 20:55:40
[20:55:40]sub_fun 1, file:file.eml1, loop:1
[20:55:40]sub_fun 2, file:file.eml2, loop:1
[20:55:40]sub_fun 3, file:file.eml3, loop:1
[20:55:41]sub_fun 1, file:file.eml1, loop:2
[20:55:41]sub_fun 2, file:file.eml2, loop:2
[20:55:41]sub_fun 3, file:file.eml3, loop:2
[20:55:42]sub_fun 1, file:file.eml1, loop:3
[20:55:42]sub_fun 2, file:file.eml2, loop:3
[20:55:42]sub_fun 3, file:file.eml3, loop:3
[20:55:43]sub_fun 2, file:file.eml2, loop:4
[20:55:43]sub_fun 1, file:file.eml1, loop:4
[20:55:43]sub_fun 3, file:file.eml3, loop:4
End run on time: 20:55:44, plus sum:0, run time:4
 

 

奇怪,为什么多进程模式下,plus最后结果是0?

 

 

0
1
分享到:
评论
2 楼 cloudmail 2012-09-04  
trace 写道
引用
奇怪,为什么多进程模式下,plus最后结果是0?


子进程会复制父进程中“plus”,成为自己的一个私有变量,对它的改变不会影响父进程的plus变量

明白了,感谢解答 
1 楼 trace 2012-09-03  
引用
奇怪,为什么多进程模式下,plus最后结果是0?


子进程会复制父进程中“plus”,成为自己的一个私有变量,对它的改变不会影响父进程的plus变量

相关推荐

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    linux shell 编程1

    Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...

    linux shell编程手册

    通过阅读"Linux Shell编程手册",初学者不仅能掌握Shell的基础用法,还能了解到更多高级特性和实践技巧,从而更好地利用Shell提升日常Linux系统管理的效率。同时,熟悉Shell编程也是成为一名合格Linux系统管理员的...

    在LINUX C中以多进程方式实现微型SHELL.pdf

    Linux C为用户提供了一个强大的编程环境,本文分析了微型SHELL的基本功能及实现机制,并使用Linux下的多进程编程技术设计了一个微型SHELL,最后给出了在Linux C下的实现代码。 微型SHELL的基本功能包括命令解释、...

    LinuxShell脚本编程实例.doc

    Linux Shell脚本编程实例是指使用Linux操作系统的Shell来编写脚本程序,实现自动化任务、批处理和system administration等功能。本文将通过实例讲解Linux Shell脚本编程的基本概念、语法和应用。 一、基本概念 1. ...

    linux shell 编程指南

    通过阅读这本书,你不仅能掌握Shell编程的基本语法,还能了解到如何利用Shell实现日常的系统管理和自动化工作流程,从而提高工作效率。在实践中不断探索和学习,Shell编程将成为你不可或缺的技能。

    Linux Shell编程.

    ### Linux Shell编程知识点详解 #### 一、Shell编程概述 **Shell** 在 Unix/Linux 系统中扮演着极其重要的角色,既是用户与操作系统交互的主要接口,也是一种强大的编程语言。通过 Shell 编程,用户不仅可以自动化...

    linux下shell编程

    ### Linux 下 Shell 编程详解 #### 一、Shell 的概念与作用 Shell 是一种特殊的程序,它作为用户与 Linux/UNIX 操作系统之间的重要接口。它的存在为用户提供了便捷的操作方式,同时也起到了保护内核免受用户误操作...

    Linux Shell编程基础

    Linux Shell编程基础是掌握Linux系统管理和自动化任务执行的关键技能之一。本文主要介绍如何开始编写Shell脚本,如何处理注释,以及如何执行脚本。同时,我们还将深入探讨Bash中的各种变量,包括环境变量、位置变量...

    京峰教育Linux Shell基础编程

    Linux Shell 种类非常多,常见的 SHELL 如下:Bourne Shell、Bourne Again Shell、C Shell、K Shell、Shell for Root 等。不同的 Shell 语言的语法有所不同,一般不能交换使用,最常用的 shell 是 Bash,也就是 ...

    linux shell学习资料

    在本学习资料包中,包含了三本关于Linux Shell的重要书籍:《Linux Shell编程艺术》、《Linux Shell脚本攻略》以及《Linux Shell从入门到精通》,这些资源将帮助你全面深入地理解和掌握Linux Shell。 《Linux Shell...

    linux shell C语言实现

    C语言编程实现了linux的shell功能,包括多管道,父子进程,输入输出重定向以及简单的纠错功能。另外还有详细的word说明文档及图片,介绍了程序执行情况和各个函数说明。(好吧,坦白说了吧,这是我上linux课程是一次...

    linux_c_func.rar_C shell_linux c 编程_shell_shell linux_shell编程

    Shell编程则是利用Shell语言编写脚本,实现自动化任务处理,极大提高了工作效率。本文将围绕“Linux C函数”以及“C Shell”在Linux环境中的编程实践进行详细阐述。 首先,让我们探讨一下Shell编程。在Linux中,...

    Linux Shell命令行及脚本编程实例详解

    本文将深入探讨Linux Shell命令行及其脚本编程的实例详解,旨在帮助读者掌握这一强大的工具。 首先,我们需要了解Linux的基础,它是开源的操作系统,提供了稳定且灵活的环境,广泛应用于服务器和开发领域。Linux ...

    UNIX and Linux shell命令,shell编程资料,Per中文件手册

    3. **在Linux世界驰骋系列之Shell编程.pdf**:这本书可能专注于Perl在Linux环境中的应用,可能涵盖了如何结合Shell和Perl进行系统级编程的实例。 4. **C-Shell Script Training Manual.pdf**:这本书可能专门针对C-...

    Linux Shell编程实验

    Shell是Linux操作系统中的一个重要组件,它作为用户与系统交互的接口,负责解释用户输入的命令,创建子进程执行相应功能,并在任务完成后返回提示符。除此之外,Shell还是一种强大的编程语言,具备变量、控制结构和...

    实战Linux Shell编程与服务器管理-脚本文件.rar

    在本资源包中,我们聚焦于“实战Linux Shell编程与服务器管理”。Shell编程是Linux操作系统中的核心技能之一,它允许用户通过命令行界面自动化执行任务,极大地提高了工作效率。以下是关于这个主题的一些关键知识点...

    linux shell角本编程PPT 打包

    Linux Shell脚本编程是Linux系统管理中的重要技能,它允许用户通过编写命令行脚本来自动化日常任务,提高工作效率。这份“Linux Shell脚本编程PPT打包”资源包含了从入门到精通的完整教程,旨在帮助初学者和有经验的...

    Linux shell编程

    Linux Shell编程是Linux操作系统中的一种重要工具,它...掌握Linux Shell编程能让你更高效地管理Linux系统,编写自动化任务,实现日常工作的便捷化。通过不断的实践和学习,你将能够编写出更复杂的脚本,解决各种问题。

    Shell编程范例之进程操作-TinyLab原创

    在Linux下,使用fork系统调用创建多进程。进程的创建通常发生在命令行键入程序文件名之后。 进程创建的范例包括让程序在后台运行,例如使用`sleep 100 &`命令,这将使程序在后台执行,其中`&`符号让程序脱离当前...

Global site tag (gtag.js) - Google Analytics