创建子进程后调用系统调用execlp的程序 execlp.c怎么操作
时间: 2024-05-13 21:19:30 浏览: 71
execlp 是一个系统调用,可以在子进程中用来执行一个程序。它的原型如下:
```
int execlp(const char *file, const char *arg, ...);
```
其中,file 参数为要执行的程序名,arg 为程序的参数列表。参数个数不定,最后一个必须是 NULL。
下面是一个使用 execlp 的示例程序 execlp.c:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed\n");
exit(1);
} else if (pid == 0) {
// 子进程
execlp("/bin/ls", "ls", "-l", NULL);
} else {
// 父进程
wait(NULL);
printf("Child complete\n");
exit(0);
}
}
```
在这个程序中,我们先调用 fork() 创建子进程,然后在子进程中调用 execlp() 来执行 ls 命令,输出当前目录下的文件列表。父进程通过调用 wait() 等待子进程执行完毕,然后输出 "Child complete"。
要运行这个程序,可以使用以下命令:
```
gcc -o execlp execlp.c
./execlp
```
运行结果应该类似于以下内容:
```
total 16
-rwxr-xr-x 1 user user 7976 Jan 1 00:00 execlp
-rw-r--r-- 1 user user 407 Jan 1 00:00 execlp.c
Child complete
```
这个例子中的 execlp() 调用可以被替换成其他的系统调用,例如 execvp() 或 execv(),只需要根据需要修改参数即可。
阅读全文