当前位置: 首页 > 面试题库 >

exec系列系统调用(例如exec和execve)的功能之间有什么区别?

林绪
2023-03-14
问题内容

我最近一直在学习系统编程课程,并且通过系统调用 exec()execve()来学习
。到目前为止,我找不到这两者之间的任何区别,即使Wikipedia也没有给出明确的解释,所以 exec()execve()
之间也存在区别。

有人可以提供有关exec系列系统调用的简短描述,例如 execl()execv()execle()
execvp()


问题答案:

使用man exec和阅读:

The execv(), execvp(), and execvpe() functions provide an array of pointers to 
null-terminated strings that represent the argument list available to the new program. 
The first argument, by convention, should point to the filename associated with the file 
being executed. The array of pointers must be terminated by a NULL pointer.

execv

int execv(const char *path, char *const argv[]);

所以你传递一个数组作为参数

int execle(const char *path, const char *arg,
              ..., char * const envp[]);

几乎相同,但不是一个数组,而是一个值列表(字符串),后面跟着一个数组来指定环境。

这里:

int execvp(const char *file, char *const argv[]);

您正在调用的文件没有路径,因此它希望您path在调用之前已经处于正确的位置。

最后但并非最不重要的:

int execve(const char *filename, char *const argv[],
                  char *const envp[]);

与上一个相似,但是现在有两个数组,用于参数和环境变量。



 类似资料:
  • 我读了很多类似的问题,但没有一个适合我 im使用WAMP2.2、Apache2.0和PHPV5。3.8 safe_mode=off-disabled_functions已从php.ini删除 当我尝试时,什么都没有发生 虽然我将apache服务的用户更改为管理员,并且我验证用户使用 问题出在哪里?

  • 本文向大家介绍内核和操作系统之间有什么区别?,包括了内核和操作系统之间有什么区别?的使用技巧和注意事项,需要的朋友参考一下 操作系统 操作系统(OS)是管理计算机硬件资源并充当用户与计算机硬件之间的接口的软件集合。它为计算机程序提供通用服务。操作系统是计算机系统中系统软件的重要组成部分。 核心 内核是操作系统的核心部分,并负责该操作系统的所有主要活动。内核由各种模块组成,它直接与底层硬件交互。它还

  • 问题内容: 我一直在研究Python代码的动态评估,并遇到和函数以及该语句。 有人可以解释之间的区别和怎样的不同模式,适应吗? 问题答案: 简短答案,即TL; DR 基本上,用于EVAL审视你们单个动态生成的Python表达式,并exec用于EXEC动态生成的Python代码仅针对其副作用尤特。 并具有以下两个区别: eval仅接受一个表达式,exec可以使用具有Python语句的代码块:循环和函

  • 问题内容: 我一直想在Google上找到这四个之间的区别,我希望这方面会有大量的信息,但是这四个调用之间确实没有任何可靠的比较。 我着手尝试汇编一下这些系统调用之间的区别的基本概况,这就是我得到的。所有这些信息是否正确/我是否缺少任何重要信息? :fork调用基本上是对当前过程进行复制,几乎在所有方面都相同(例如,并非在某些实现中都复制了所有内容,例如,在某些实现中资源有限,但其想法是创建尽可能近

  • 问题内容: 让对PDO的引用等于PDO对象,而不是PDO本身- 我在这里看到同时存在和。在被链接的页面,似乎是用于报表ONLY,并用于,,语句。现在,我是全新的,以PDO,所以我不知道什么是使用它的条款上会 相当尚未 ,所以我将不胜感激为什么要使用不同的方法解释,为什么有不同的方法。 问题答案: 尽管在理论上有任何差异,但无论如何都不应使用这些功能-因此,无需担心。 使用PDO的唯一原因是 对准备

  • 问题内容: 两者都将能够在容器中执行命令。两者都可以分离容器。 那么docker exec和docker attach之间的真正区别是什么? 问题答案: 有一个提交PR添加到文档中: 注意: 此命令()不适用于在容器中运行新进程。请参阅:。 回答“ Docker。如何在运行的容器()中获取bash \ ssh ? ”阐明了区别: (docker> = 1.3)如果使用, 则只能使用shell的一个