linux下exec命令的各个参数
-
exec命令是Linux中的一个系统调用,用于替换当前进程的映像。其参数是一个可执行文件的路径及一组命令行参数。
exec命令的参数包括以下几个:
1. filename:可执行文件的路径,可以是绝对路径或相对路径。该文件必须是可执行文件,否则会执行失败。
2. arg1, arg2, …:一组命令行参数,这些参数将会传递给被执行的程序。参数之间用空格分隔。除了以上两个必选参数外,还可以指定环境变量:
3. envp:一个以NULL结尾的字符串数组,其中每个字符串表示一个环境变量的键值对,形如”key=value”。这些环境变量将被传递给被执行的程序。另外,还可以在exec命令中指定标准输入、标准输出和标准错误的重定向:
4. stdin:用于重定向标准输入的文件描述符,一般为0。可选参数,如果不指定,则使用当前进程的标准输入。
5. stdout:用于重定向标准输出的文件描述符,一般为1。可选参数,如果不指定,则使用当前进程的标准输出。
6. stderr:用于重定向标准错误的文件描述符,一般为2。可选参数,如果不指定,则使用当前进程的标准错误。这些参数可以按照需要进行组合使用,以实现不同的效果。例如,可以指定环境变量、重定向标准输入输出等。
总之,exec命令是一个强大的系统调用,可以用于替换当前进程的映像,实现进程间的切换和传递参数等功能。
2年前 -
在Linux系统中,exec是一个用于替换当前进程的系统调用。它的功能是用一个新的程序替换当前程序,同时可以改变新程序的各种属性。exec的参数主要包括以下几个:
1. execl/execlp/execle:
– execl:最简单的exec函数,需要指定可执行文件的路径以及各个参数。例如:execl(“/bin/ls”, “ls”, “-l”, NULL);
– execlp:与execl类似,但可以不需要指定可执行文件的路径,系统会根据环境变量$PATH来搜索可执行文件。例如:execlp(“ls”, “ls”, “-l”, NULL);
– execle:除了指定可执行文件路径和参数,还可以指定进程的环境变量。该函数需要传入一个额外的参数envp,是一个指向环境变量的指针数组。例如:execle(“/bin/ls”, “ls”, “-l”, NULL, envp);2. execv/execvp/execve:
– execv:与execl类似,但需要将命令行参数放置在一个字符数组中,每个参数以空格分隔,并以NULL结尾。例如:char *args[] = {“ls”, “-l”, NULL}; execv(“/bin/ls”, args);
– execvp:与execv类似,但可以不需要指定可执行文件的路径,系统会根据环境变量$PATH来搜索可执行文件。例如:char *args[] = {“ls”, “-l”, NULL}; execvp(“ls”, args);
– execve:除了指定可执行文件路径和参数,还可以指定进程的环境变量。该函数需要传入一个额外的参数envp,是一个指向环境变量的指针数组。例如:char *args[] = {“ls”, “-l”, NULL}; execve(“/bin/ls”, args, envp);3. exec函数的返回值:
– 如果exec调用成功,它将不会返回,新的程序将取代当前进程的执行;
– 如果exec调用失败,它将返回-1,并设置errno错误码;4. exec函数的搜索路径:
– exec函数使用$PATH环境变量来寻找可执行文件的路径;
– $PATH是一个包含多个目录路径的字符串,每个路径由冒号分隔;
– 可以通过修改$PATH环境变量来改变exec函数的搜索路径;5. execvpe函数:
– execvpe函数是一个GNU扩展函数,它允许通过环境变量来指定可执行文件的路径,可以同时指定可执行文件的路径和参数。例如:extern char **environ; execvpe(“ls”, args, environ);上述是exec函数的主要参数和相关知识点,通过这些参数可以实现程序的替换和改变属性等功能。在实际使用中,可以根据需要选择合适的参数来调用exec函数。
2年前 -
Linux下的exec命令是一个很有用的命令,可以用来执行一个新的进程,替换当前的进程。exec命令有多个参数,每个参数都有不同的作用和用法。下面我将详细介绍每个参数的含义和用法。
1. -a 或 –args:用于指定新进程的命令行参数。例如,exec -a command arg1 arg2 将执行命令 command,并传递参数 arg1 和 arg2 给它。
2. -c 或 –close-from:用于指定要关闭的文件描述符的最小值。这个参数通常用于将不需要的文件描述符关闭,以节省系统资源。
3. -e 或 –environment:用于指定新进程的环境变量。可以使用多个 -e 参数来指定多个环境变量。例如,exec -e VAR1=value1 -e VAR2=value2 command 将设置 VAR1 和 VAR2 两个环境变量,并执行命令 command。
4. -l 或 –login:用于指定新进程为一个登录 shell。这意味着新进程将执行登录 shell 的初始化脚本,并设置相应的环境变量。
5. -p 或 –preserve-environment:用于保持当前进程的环境变量。新进程将继承当前进程的环境变量。
6. -f 或 –flush:用于刷新文件描述符。这个参数通常用于在执行exec之前,将文件描述符的缓冲区内容写入文件。
7. -u 或 –unset-env:用于禁用继承环境变量。新进程将不会继承当前进程的环境变量。
8. -v 或 –verbose:用于显示详细的执行信息。
9. command:要执行的命令。
下面是几个使用exec命令的示例:
1. 替换当前进程:
exec command
这个命令将执行指定的命令,并用它来替换当前的进程。2. 设置新的环境变量:
exec -e VAR=value command
这个命令将设置环境变量 VAR,并执行指定的命令。3. 刷新文件:
exec -f command
这个命令将刷新文件描述符的缓冲区,然后执行指定的命令。4. 关闭文件描述符:
exec -c minfds command
这个命令将关闭文件描述符的最小值大于等于 minfds 的所有文件描述符。以上就是exec命令的各个参数及其使用方法。通过这些参数,可以灵活地使用exec命令来执行新的进程,并根据需要设置环境变量、关闭文件描述符等操作。
2年前