您的位置:首页 > 其它

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

2013-09-11 14:21 309 查看
利用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: