关于c中的开放函数


#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int in_fd = open("here_doc.tmp", O_CREAT | O_RDWR | O_TRUNC, 0644);
int out_fd = open("outfile", O_CREAT | O_RDWR | O_APPEND, 0644);

write(in_fd, "hello 1n", 8);
write(in_fd, "Pello 1n", 8);
write(in_fd, "Yello 1n", 8);

/* ********* I wonder why the two line below are necessary ******* */
close(in_fd);
in_fd = open("here_doc.tmp", O_RDWR, 0644);

dup2(in_fd, 0);
dup2(out_fd, 1);
close (in_fd);
close (out_fd);

char *argv[]= {"cat", NULL};
execve("/bin/cat", argv, NULL);
}

我想让代码像"<lt;(heredoc)";所以我练习如何使用";开放函数";

我认为open("here_doc.tmp, some_option)只需要一次。

它可以在这里创建_doc.tmp并写得很好,但不能传输到execve

然后我知道要让它正常工作,我需要加上那两行,但我不知道为什么我想知道为什么这些是必要的

(叮当1200.0.3.228)

成功执行write(2)操作后,文件偏移量指示器向前移动写入的字节数。

在这里,文件被关闭,以便重置偏移指示器。您可以调用lseek(2)而不是close(2)来重新定位它。

相关内容

  • 没有找到相关文章

最新更新