Linux怎么打开exec
Linux怎么打开exec详细介绍
- 理解
exec是什么- 在 Linux 中,
exec是一组函数(包括execl、execv、execle、execve、execlp、execvp),而不是一个可以像普通程序一样 “打开” 的东西。这些函数主要用于在一个进程中用一个新的程序替换当前正在运行的程序。当exec函数族被调用成功后,新程序会开始执行,并且不会返回原程序的代码,除非出现错误。
- 在 Linux 中,
- 在代码中使用
exec函数族- 以
execl函数为例,它的基本语法是int execl(const char *path, const char *arg0,... /* (char *)0 */);。 - 假设你想在一个 C 语言程序中使用
execl来执行ls -l命令。以下是一个简单的示例代码:
- 以
c
- 在上述代码中,
execl函数会尝试用/bin/ls程序替换当前正在运行的程序。如果execl调用成功,新的ls -l程序就会开始执行,并且原程序不会继续执行后续的代码(return 0;这行不会被执行)。如果execl调用失败,execl函数会返回 - 1,并且会输出错误信息。 - 不同的
exec函数族成员在参数传递方式等方面有所不同。例如,execv函数使用一个字符串数组来传递参数,而execlp会在PATH环境变量指定的目录中查找要执行的程序,使用起来更加方便,不需要指定完整的程序路径。以下是execv的一个示例:
c
args
args
- 在脚本中使用
exec(以 Bash 脚本为例)- 在 Bash 脚本中,可以使用
exec命令来重定向文件描述符或者替换当前的 shell 进程。例如,要将脚本的标准输出和标准错误输出都重定向到一个文件output.log,可以这样写:
- 在 Bash 脚本中,可以使用
bash
output.log >
- 在这个脚本中,
exec >output.log 2>&1这一行将标准输出(文件描述符 1)重定向到output.log文件,同时将标准错误输出(文件描述符 2)也重定向到标准输出所指向的位置(也就是output.log文件)。之后的echo命令输出的内容就会被写入output.log文件中。 - 另外,
exec还可以用于在脚本中用一个新的命令替换当前的脚本进程。例如:
bash
9123#!/bin/bashexec
- 这个脚本会用
ls -l命令替换当前的脚本进程,执行完ls -l后,脚本就结束了,不会再执行脚本中exec命令之后的其他代码。