首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux文件管理

Linux文件管理
EN

Stack Overflow用户
提问于 2018-03-27 05:02:50
回答 1查看 62关注 0票数 0

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

代码语言:javascript
复制
#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),但是我到处寻找,却找不到一个我真正理解的答案。

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

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

发布于 2018-03-27 05:07:46

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

代码语言:javascript
复制
#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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49500541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档