- 浏览: 1536818 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
exec系列中的系统调用都完成相同的功能(只是参数不同而已),它们把一个新程序装入调用进程的内存空间,来改变调用进程的执行代码,从而形成新进程。如果exec调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新的进程,但是它的进程标识符与调用进程相同。这就是说,exec没有建立一个与调用进程并发的新进程,而是用新进程取代了原来的进程。所以,在exec调用成功后,没有任何数据返回,这与fork()不同。下面给出了exec系列系统调用在linux系统库unistd.h中的函数声明:
int execl(const char *path,const char *arg,...);
int execlp(const char *file,const char *arg,...);
int execle(const char *path,const chr *arg,...,char * const envp[]);
int execv(const char *path,char * const argv[]);
int execvp(const char *file,char * const argv[]);
以execl()为例,execl()调用的参数均为字符型指针,第一个参数path给出了被执行的程序所在的文件名,它必须是一个有效的路径名,文件本身也必须是一个真正的可执行程序。第二个以及用省略号表示的其他参数一起组成了该程序执行时的参数表,按照linux的贯例,参数表的第一项是不带路径的程序文件名。被调用的程序可以访问这个参数表,它们相当于shell下的命令行参数。实际上,shell本身对命令的调用也是用exec调用来实现的。由于参数的个数是任意的,所以必须用一个NULL指针来标记参数表的结尾。下面给出一个使用execl调用来运行目录列表程序ls的例子:
与它类似的是execlp(),它们的主要区别是:execlp()的第一个参数指向的是一个简单的文件名,而不是一个路径名,它通过检索shell环境变量PATH指出的目录来得到该文件名的路径前缀部分。
exec常用法:exec系统调用经常与fork()联合使用,我们可以先用fork建立一个子进程,然后在子进程中使用exec,这样就实现了父进程运行一个与其不同的子进程,并且父进程不会被覆盖。下例为fork和exec联用的例子:
int execl(const char *path,const char *arg,...);
int execlp(const char *file,const char *arg,...);
int execle(const char *path,const chr *arg,...,char * const envp[]);
int execv(const char *path,char * const argv[]);
int execvp(const char *file,char * const argv[]);
以execl()为例,execl()调用的参数均为字符型指针,第一个参数path给出了被执行的程序所在的文件名,它必须是一个有效的路径名,文件本身也必须是一个真正的可执行程序。第二个以及用省略号表示的其他参数一起组成了该程序执行时的参数表,按照linux的贯例,参数表的第一项是不带路径的程序文件名。被调用的程序可以访问这个参数表,它们相当于shell下的命令行参数。实际上,shell本身对命令的调用也是用exec调用来实现的。由于参数的个数是任意的,所以必须用一个NULL指针来标记参数表的结尾。下面给出一个使用execl调用来运行目录列表程序ls的例子:
#include <stdio.h> #include <unistd.h> int main() { printf("executing ls\n"); execl("/bin/ls","ls","-l",NULL); //如果execl返回,说明其调用失败 perror("execl failed to run ls"); exit(1); }
与它类似的是execlp(),它们的主要区别是:execlp()的第一个参数指向的是一个简单的文件名,而不是一个路径名,它通过检索shell环境变量PATH指出的目录来得到该文件名的路径前缀部分。
exec常用法:exec系统调用经常与fork()联合使用,我们可以先用fork建立一个子进程,然后在子进程中使用exec,这样就实现了父进程运行一个与其不同的子进程,并且父进程不会被覆盖。下例为fork和exec联用的例子:
#include <stdio.h> #include <unistd.h> #include <sys/types.h> int main() { pid_t pid; pid = fork(); if(pid < 0) { perror("fork failed"); exit(1); } else if(0 == pid) { execl("/bin/ls","ls","-l","--color",NULL); perror("execl failed"); exit(1); } else { wait(NULL); printf("ls completed\n"); exit(0); } }
发表评论
-
Linux内核源码包的安装及编译zz
2009-12-15 20:58 4312http://my.donews.com/ecco2005/2 ... -
Linux内核Makefile文件(二)
2009-12-15 19:34 2460=== 6 体系Makefile文 ... -
Linux内核Makefile文件(一)
2009-12-15 19:34 1876本文是/Documentation/kbuild/make ... -
Linux加载模块命令
2009-12-15 19:28 2717安装模块insmod *.ko卸载 ... -
linux内核模块编程
2009-12-15 19:25 3612主题: linux内核模块的程序结构--模块加载函数(必须), ... -
编译linux内核~
2009-12-05 22:04 1426小菜鸟第一次编译linux内核。截图太多 。。不方便上传 = ... -
grub2 基础教程
2009-12-05 18:01 2795grub2基础教程-修订版 ... -
Ubuntu9.10版本没有了menu.lst文件!
2009-12-05 18:00 3157囧~现在都在grub下面配置了。 不过麦斯之前的men ... -
关于信号量与线程互斥锁的区别与实现
2009-11-30 14:37 2436之前一直没有怎么 ... -
Linux信号量线程控制
2009-11-30 14:31 3697线程中互斥锁的使用,达到对共享资源互斥使用。除了使用互斥锁, ... -
信号量和自旋锁
2009-11-29 21:56 1674内核同步措施 ... -
Linux信号量semaphore编程实例
2009-11-29 21:20 6606本例示范Linux信号量的基本用法。该范例使用了两个线程分别对 ... -
Linux获取当前时间
2009-11-29 21:16 3695Linux获取当前时间 ... -
pthread库学习(2): 线程的同步,使用信号量
2009-11-29 20:55 2508先看下面这段程序,主线程创建了三个线程,每个线程中均有一个打印 ... -
信号量的基本思想
2009-11-29 20:17 1494信号量是1965荷兰Dijkstra 为了解决并发进程问题 ... -
多进程通信方式一:管道(PIPE)
2009-11-27 18:29 9125进程通信(IPC)的几种方式及比较 撰文:黄显国08 ... -
进程的管道通信
2009-11-27 18:12 3020实验四 进程的管道通信 ... -
Linux下线程的挂起和恢复
2009-11-27 15:42 3759POSIX的Linux操作系统没有提供线程挂起和恢复的例程,在 ... -
Linux 编程之生成静态连接库
2009-11-27 15:41 1417静态库及动态库的建立 ... -
LInux高级编程 - 线程(Threads)
2009-11-27 15:40 1924LInux高级编程 - 线程(Threads) ...
相关推荐
2. **exec系列系统调用**:exec家族包括execve、execl、execlp等,它们用于在当前进程空间中替换新的程序。当使用exec调用执行shell命令时,当前进程的上下文会被新命令替代。实验中提到`exec ls`会替换当前shell,...
* exec 系列系统调用:将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。 * wait 系统调用:等待子进程运行结束。如果子进程没有完成,父进程一直等待。 * signal ...
exec系列系统调用用于加载新的程序执行文件到进程地址空间,替换当前进程的映像。wait系统调用则使进程等待子进程结束,并获取子进程状态。exit系统调用使得进程终止自己,释放系统资源。 2. 代码分析:UNIX系统...
fork调用后,可以通过使用exec系列系统调用在子进程中运行新的程序。子进程可通过wait系统调用来等待父进程对其进行管理。另外,进程可以通过命令行参数来接收初始化参数。进程还可以通过信号来控制,例如kill信号...
12.2.5 往事件多路分发器中注册事件 12.2.6 eventop结构体 12.2.7 event_base结构体 12.2.8 事件循环 第13章 多进程编程 13.1 fork系统调用 13.2 exec系列系统调用 13.3 处理僵尸进程 13.4 管道 13.5 信号...
表中的每一项代表一个文件描述符,记录了与文件交互的相关信息,如文件描述符的控制标志(如close-on-exec,用于决定是否在执行exec系列系统调用时关闭文件描述符)以及指向系统级打开文件表的指针。文件描述符的...
### 系统调用表的重要性及其作用 系统调用是操作系统提供给编程人员的唯一接口,使得用户程序能够请求并获得操作系统的服务。在本篇内容中,我们将详细探讨《系统调用表可以作为索引使用》这一主题的核心知识点,...
### Linux系统调用详解 #### 一、进程控制 Linux系统调用是操作系统与应用程序之间的桥梁,它们允许用户空间的应用程序请求内核执行特定的任务。下面详细介绍与进程控制相关的系统调用。 - **fork()**: 创建一个...
统会自动回收其资源,但有时父进程需要等待子进程完成后再进行后续操作,这时就需要使用wait系统调用来实现。wait函数允许父进程挂起,直到一个子进程终止或者接收到信号,然后恢复并返回子进程的退出状态。 在实验...
在Linux操作系统中,系统调用是用户空间程序与内核交互的主要途径,它们提供了一系列标准接口,用于执行底层操作,如文件I/O、进程管理、内存管理等。本集合涵盖了16篇关于常用Linux系统调用函数的文章,旨在深入...
`exec`系列函数包括`execl`、`execle`、`execlp`、`execv`、`execvp`和`execvpe`等,它们的主要功能是加载并执行一个新的程序,而不会返回到调用点。这些函数的区别在于参数处理和环境变量的设置方式。 1. `execl`...
在UNIX和Linux操作系统中,进程创建和控制是通过一系列系统调用来实现的,其中最常见的是`fork`、`exec`系列以及`system`和`popen`函数。这些调用各自有不同的特性和用途,理解它们的区别对于进行系统级编程至关重要...
掌握系统调用fork( ),exec系列函数(6个),exit( ),wait( ),waitpid( ),getpid( ),getppid( )的功能和实现过程。 3. 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父...
此外,exec()系列函数用于在已存在的进程中加载新的程序映像,也是进程创建过程中的重要组成部分。 **进程同步**: 在多进程环境中,进程同步是确保多个并发进程协调执行的关键。实验中可能涉及的概念有互斥锁、...
这时,PHP提供了一系列内置函数,如`exec`、`system`、`passthru`和`escapeshellcmd`,允许我们调用系统命令。然而,这些功能强大的函数同时也伴随着潜在的安全风险,因此在实际应用中需谨慎使用。 `exec`函数用于...
本实验主要关注与进程控制相关的四个关键系统调用:`fork`、`exec`、`exit`和`wait`,以帮助理解进程的状态变迁和调度。 1. **fork系统调用**: `fork()`用于创建一个新的进程,即父进程的副本。在调用`fork()`后...
`exec`系列的系统调用(如`execvp`)用于替换当前进程的内存映像,使进程执行新的程序。在示例中,`execvp`被用来执行`Program B`,替换掉原来的`Program A`的执行流。如果`exec`成功,程序将不会返回到调用它的代码...
`fork()`函数是Unix和类Unix系统(如Linux)中用于创建新进程的关键系统调用。它会创建一个与调用进程几乎完全一样的副本,被称为子进程。这两个进程拥有相同的代码、全局变量、环境变量以及打开的文件描述符,但...
在实际应用中,`native-exec`可能适合于需要高性能系统调用的场景,例如构建命令行工具、自动化脚本或者需要频繁执行系统命令的后台服务。使用时,需要注意安全问题,避免命令注入攻击,确保只执行预期的命令和参数...