对linux中source,fork,exec的理解以及case的 使用

fork
   使用 fork 方式运行 script 时, 就是让 shell(parent process) 产生一个 child process 去执行该 script, 当 child process 结束后, 会返回 parent process,但 parent process 的环境是不会因 child process 的改变而改变的.

source
   使用 source 方式运行 script 时, 就是让 script 在当前 process 内执行, 而不是产生一个 child process 来执行. 由于所有执行结果均于当前 process 内完成,若 script 的环境有所改变, 当然也会改变当前 process 环境了.
source ./my.sh 或 . ./my.sh
 
exec
   使用 exec 方式运行script时, 它和 source 一样, 也是让 script 在当前process内执行, 但是 process 内的原代码剩下部分将被终止. 同样, process 内的环境随script 改变而改变.

case的使用

      case $1 in

               exec)

                  echo "using exec..."

                   exec ./2.sh ;;//必须注意后面的两个分号,必须使用两个分号

             source)

               echo "using source..."

               . ./2.sh ;;

               *)//此处代表默认配置

                  echo "using fork by default..."

                   ./2.sh ;;

         esac
注意在是用的过程中,变量$1由./hao.sh source这样类似的语句产生

时间: 2024-10-18 21:37:21

对linux中source,fork,exec的理解以及case的 使用的相关文章

Shell中source/fork/exec的区别

fork是linux的系统调用,用来创建子进程,子进程是父进程的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境.子进程与父进程唯一不同的地方在于pid(process id).环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程.不管子进程的环境变量如何变化,都不会影响父进程的环境变量.默认shell中的命令都是此种方式,创建sub-shell,然后执行.执行完后,返回父shell. exec和source都属于bash内置命令,执行sour

Linux中的fork()函数

 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事. 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都 复制到新的新进程中,只有少数值与原来的进程的值不同.相当于克隆了一个自己. 我们来看一个例子: /* *  fork_test.c *  version 1

Linux中source是什么指令?

命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令. 注:该命令通常用命令“.”来替代. 如:source /etc/profile 与 .  /etc/profile 是等效的. 注意:source命令与shell scripts的区别是: source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令.这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的B

Linux中Source的用法

source命令:source命令的功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.用法:source filename 或 . filenamesource命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称. source filename 与 sh filename 及./filen

Linux中的文件权限怎么理解

Linux的权限不是很细致,只有RWX三种r(Read,读取):对文件而言,具有读取文件内容的权限:对目录来说,具有浏览目录的权限.w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限:对目录来说,具有新建,删除,修改,移动目录内文件的权限.x(eXecute,执行):对文件而言,具有执行文件的权限:对目录了来说该用户具有进入目录的权限.1.目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入.2.只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件

linux中的fork函数的基本用法

代码: 1 #include <iostream> 2 #include <string> 3 #include <cstdio> 4 #include <unistd.h> 5 #include <sys/wait.h> 6 7 using namespace std; 8 9 int main(int argc,char* argv[]){ 10 11 pid_t pid; 12 for(int i = 0; i < 1; i++){

linux下使用fork,exec,waitpid模拟system函数

代码如下: #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> #include <errno.h> #include <stdlib.h> inline int mySystem(const char *cmd) { pid_t pid; if(cmd == NULL) return 1; int status; if

Linux fork exec等

http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html http://www.cnblogs.com/jimwind/archive/2012/12/26/2834147.html http://www.cnblogs.com/hicjiajia/archive/2011/01/20/1940154.html Linux下一个进程在内存里有三部分的数据,就是"代码段"."堆

谨慎使用多线程中的fork

前言 在单核时代,大家所编写的程序都是单进程/单线程程序.随着计算机硬件技术的发展,进入了多核时代后,为了降低响应时间,重复充分利用多核cpu的资源,使用多进程编程的手段逐渐被人们接受和掌握.然而因为创建一个进程代价比较大,多线程编程的手段也就逐渐被人们认可和喜爱了. 记得在我刚刚学习线程进程的时候就想,为什么很少见人把多进程和多线程结合起来使用呢,把二者结合起来不是更好吗?现在想想当初真是too young too simple,后文就主要讨论一下这个问题. 进程与线程模型 进程的经典定义就是