fork() 和exec() 的区别 http://blog.sina.com.cn/s/blog_9d38f2eb01019lsf.html 1、fork()一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数...
区别: fork主要是Linux用来建立新的进程而设计的,exec()系列函数则是用来指定的程序替换当前进程的全部内容。因此exec()系列函数常常在前三个函数使用以后调用,来建立一个全新的程序运行环境。Linux用init进程启动其余进程的过程通常都是这样的。 fork是最简单的调用,不须要任何参数,仅仅是在建立一个子进程并为其建立...
1)1.sh和2.sh的PID都是18633,这说明exec和source一样,并不会开启sub-shell,而是和父shell使用了同一个进程。 2)exec调用完2.sh之后,脚本就结束了,没有再继续,这是exec的特性! 总结 source命令: 不创建子进程,在当前Shell进程中执行脚本,会将新的环境变量传递到当前shell来。 exec命令: 不创建子进程, 在...
在传统的Unix环境下,有两个基本的操作用于创建和修改进程:函数fork( )用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝;函数族exec( )用来启动另外的进程以取代当前运行的进程。Linux的进程控制和传统的Unix进程控制基本一致,只在一些细节的地方有些区别,例如在Linux系统中调用vfork和fork完全相同,而在有些...
3. Fork和Exec的区别是什么? - Fork用于创建一个新的进程,而Exec用于在现有进程中执行一个新的程序。Fork创建的是父进程的副本,而Exec替换了进程的映像,加载了一个新的程序。 4. 如何在C语言中使用Fork? - 在C语言中,可以使用`fork()`函数来创建一个新的进程。这个函数返回两次:在父进程中返回子进程的PID...
进程与系统调用——fork、exec C程序无论做什么事都要靠操作系统。例如它想与硬件打交道,就要进行系统调用。系统调用是调用操作系统内核中的函数,C标准库中大部分代码都依赖于它们。例如调用printf()函数在命令行显示出字符串时,C程序都会在背后向操作系统发出系统调用,把字符串发送屏幕显示。
exec (exec /path/to/script.sh) exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本。被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别。 source (source /directory/script.sh) ...
六个exec函数之间的区别在于: (a)待执行的程序文件是由文件名(filename)还是路径名(pathname)指定; (b)新程序的参数是一一列出还是由一个指针数组来引用; (c) 把调用进程的环境传递给新程序制定的环境。 一般只有execve是内核中的系统调用,其他五个都是调用execve的库函数。
fork: 采用复制当前进程的方式来创建子进程,此时子进程与父进程的区别仅在于pid, ppid以及资源统计量(比如挂起的信号) exec:读取可执行文件并载入地址空间执行;一般称之为exec函数族,有一系列exec开头的函数,比如execl, execve等 fork过程复制资源包括代码段,数据段,堆,栈。fork调用者所在进程便是父进程,新创建的进...