dup2函数运用之重定向标准输出

利用dup2函数进行重定向标准输出,使输出到一个文件中

main.c

/*********************************************************************************
 *      Copyright:  (C) 2013 Yanshifu<Yanshifu@gmail.com>  
 *                  All rights reserved.
 *
 *       Filename:  main.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(09/11/2013~)
 *         Author:  Yan Shifu <Yanshifu@gmail.com>
 *      ChangeLog:  1, Release initial version on "09/11/2013 01:01:54 PM"
 *                 
 ********************************************************************************/
#include <stdio.h>
#include <stdlib.h>

#define pstr    "file content"
/********************************************************************************
 *  Description:
 *   Input Args:
 *  Output Args:
 * Return Value:
 ********************************************************************************/
int main (int argc, char **argv)
{

    if (argc < 2)
    {
        printf("Usage: %s filename", argv[1]);
        exit(1);
    }

    print(argv[1], pstr);

    return 0;
} /* ----- End of main() ----- */

print.c

/*********************************************************************************
 *      Copyright:  (C) 2013 Yanshifu<Yanshifu@gmail.com>  
 *                  All rights reserved.
 *
 *       Filename:  print.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(09/11/2013~)
 *         Author:  Yan Shifu <Yanshifu@gmail.com>
 *      ChangeLog:  1, Release initial version on "09/11/2013 01:03:40 PM"
 *                 
 ********************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

void print(const char *filename, const char *str)
{
    int fd;

    if ((fd = creat(filename, 0666)) < 0)
    {
        printf("creat file error \n");
        exit(1);
    }

    dup2(fd, STDOUT_FILENO);

    printf("str = %s", str);

}

print.h

/********************************************************************************
 *      Copyright:  (C) 2013 Yanshifu<Yanshifu@gmail.com>
 *                  All rights reserved.
 *
 *       Filename:  print.h
 *    Description:  This head file 
 *
 *        Version:  1.0.0(09/11/2013~)
 *         Author:  Yan Shifu <Yanshifu@gmail.com>
 *      ChangeLog:  1, Release initial version on "09/11/2013 02:02:54 PM"
 *                 
 ********************************************************************************/
#ifndef _PRINT_H
#define _PRINT_H

void print(const char *filename, const char *str);

#endif

makefile

bins=main
objs=main.o
srcs=main.c

$(bins):$(objs)
        gcc -o main main.o print.o

$(objs):$(srcs)
        gcc -c main.c

        gcc -c print.c print.h
clean:
        rm -f $(bins) *.o *.h.gch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值