execve_hook/tests/dup2.c

28 lines
599 B
C

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main() {
// 打开输出文件
int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
// 保存原始的标准输出
int stdout_copy = dup(STDOUT_FILENO);
// 复制文件描述符
dup2(fd, STDOUT_FILENO);
// 关闭原始的文件描述符
close(fd);
// 恢复标准输出
dup2(stdout_copy, STDOUT_FILENO);
char *const argv[] = {"ls", "--color=always", "--l", NULL};
extern char **environ;
execve("/usr/bin/ls", argv, environ);
return 0;
}