gpt4 book ai didi

c - 从 shell execlp 执行文件

转载 作者:行者123 更新时间:2023-11-30 18:02:07 25 4
gpt4 key购买 nike

我有一个练习要求我补充代码,以便他的执行得到的结果相当于$ date> out.txt

#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define NEWFILE (O_WRONLY | O_CREAT)
#define MODE644 (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

int main() {
int fd;
if (fork() == 0) {
//// Code Here for add/// Result

fd=open("out.txt",NEWFILE,MODE644);
dup2(fd,1);
close(fd);

execlp("date",NULL);
exit(0);
}
wait(NULL);
}

我无法理解添加的三行:

 fd=open("out.txt",NEWFILE,MODE644);
dup2(fd,1);
close(fd);

最佳答案

棘手的一点是dup2

int dup2(int fildes, int fildes2);

它关闭 filedes2 并使其成为 filedes 的克隆。这意味着,从现在开始,当您引用 filedes2 时,就像引用 filedes 一样。回到您的代码,您应该知道 STDOUT_FILENO1

所以你的代码意味着:

  • 打开文件(描述符filedes)
  • 关闭STDOUT_FILENO并使其引用filedes

关于c - 从 shell execlp 执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com