unix网络编程中exec
时间: 2024-04-08 14:25:20 AIGC 浏览: 196
在Unix网络编程中,exec函数用于执行另一个程序。当进程调用exec函数时,该进程的程序完全被替换为新程序,并从新程序的main函数开始执行。
有两种常用的exec函数:execlp和execvp。这两个函数的区别在于参数的传递方式和文件查找路径。
1. execlp函数:
- 函数原型:int execlp(const char *file, const char *arg, ...);
- 参数file是要执行的程序的文件名,arg及后续参数是传递给新程序的命令行参数。
- execlp函数会在环境变量PATH指定的路径中查找可执行文件。
- 如果找到了可执行文件,execlp函数会将该文件作为新程序执行。
- 如果找到的文件不是由连接编辑器产生的机器可执行文件,而是一个shell脚本,则execlp函数会尝试调用/bin/sh,并以该文件作为shell的输入。
2. execvp函数:
- 函数原型:int execvp(const char *file, char *const argv[]);
- 参数file是要执行的程序的文件名,argv是一个字符串数组,用于传递给新程序的命令行参数。
- execvp函数会在当前目录和环境变量PATH指定的路径中查找可执行文件。
- 如果找到了可执行文件,execvp函数会将该文件作为新程序执行。
- 如果找到的文件不是由连接编辑器产生的机器可执行文件,而是一个shell脚本,则execvp函数会尝试调用/bin/sh,并以该文件作为shell的输入。
下面是一个使用execlp函数的示例:
```c
#include <unistd.h>
int main() {
execlp("ls", "ls", "-l", NULL);
return 0;
}
```
这个程序会调用execlp函数执行ls命令,并传递参数"-l"给ls命令。执行结果会在终端上显示文件列表的详细信息。
阅读全文
相关推荐

















