gpt4 book ai didi

c - Linux 文件管理

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:22 26 4
gpt4 key购买 nike

我正在学习 Linux,我需要创建一个允许输入重定向 (stdin) 和输出重定向 (stdout) 的函数。我发现了一个示例,其中实际创建了一个文件文本,该文件文本的名称是我选择的名称。但是我不明白如何在创建同一个文件后写入它。我发现的函数是下面这个

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

#define LOCKFILE "/etc/ptmp"
int main()
{
int pfd;
char filename[1024];
if ((pfd = open("Test", O_WRONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1)
{
perror("Cannot open output file\n"); exit(1);
}
}

我需要创建一个函数,允许我使用 open 和 dup/dup2 输入重定向 (stdin) 和输出重定向 (stdout),但我到处搜索,但我找不到一个答案真的明白了。

所以现在我正在尝试这种方式,但我仍然无法写入文件

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define LOCKFILE "/etc/ptmp"
int main()
{
int pfd;
char filename[1024];
if ((pfd = open("Test", O_RDONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1)
{
perror("Cannot open output file\n"); exit(1);
}
dup2(STDIN_FILENO, pfd);
close(pfd);
printf("This will be put in the file\n");
return 0;
}

最佳答案

打开文件后,可以使用 dup2() 将标准文件描述符重定向到它:

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define LOCKFILE "/etc/ptmp"
int main()
{
int pfd;
char filename[1024];
if ((pfd = open("Test", O_WRONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1)
{
perror("Cannot open output file\n"); exit(1);
}
dup2(STDOUT_FILENO, pfd);
close(pfd);
printf("This will be put in the file\n");
return 0;
}

要重定向 stdin,请以 O_RDONLY 模式打开文件并使用 STDIN_FILENO

关于c - Linux 文件管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49500541/

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