#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h> #define BUF_SIZE 1024 void tee(char *filename)
{
char szBuf[BUF_SIZE];
int fd = open(filename, O_RDWR | O_CREAT | O_APPEND, 0664);
while(1) {
memset(szBuf, 0, BUF_SIZE);
read(STDIN_FILENO, szBuf, BUF_SIZE);
fprintf(stderr, "%s", szBuf);
write(fd, szBuf, strlen(szBuf));
}
} int main(int argc, char **argv)
{
if (argc != 2 || !strcmp(argv[1], "--help")) {
printf("Usage:%s [filename]\n", argv[0]);
printf("\tfilename:output file\n");
return 0;
}
tee(argv[1]);
return 0;
}

尚需学习:输入一个文件名,判断当前目录是否包含此文件。

更改后的程序,包含功能:如文件已存在,则实现-a命令行选项(tee -a file)在文件结尾处追加数据。

#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h> #define BUF_SIZE 1024 void tee(int argc, char *filename)
{
char szBuf[BUF_SIZE];
int fd;
if (argc == 2) {
fd = open(filename, O_RDWR | O_CREAT, 0664);
}
if (argc == 3){
fd = open(filename, O_RDWR | O_APPEND);
}
while(1) {
memset(szBuf, 0, BUF_SIZE);
read(STDIN_FILENO, szBuf, BUF_SIZE);
fprintf(stderr, "%s", szBuf);
write(fd, szBuf, strlen(szBuf));
}
} int main(int argc, char **argv)
{
if ((argc != 2 && argc != 3) || !strcmp(argv[1], "--help")) {
printf("Usage:%s [filename]\n", argv[0]);
printf("\tfilename:output file\n");
return 0;
}
if (argc == 2) {
int iRet = access(argv[1], F_OK); // 判断文件是否存在
if (iRet == 0) {
printf("File Existed\n");
printf("please use [-a] option\n");
printf("Usage:%s [-a] [filename]\n", argv[0]);
return 0;
}
tee(argc, argv[1]);
}
else {
tee(argc, argv[2]);
}
return 0;
}

  

4-1:实现tee命令的更多相关文章

  1. tee命令

    tee命令 http://liubin.blog.51cto.com/282313/131298 https://en.wikipedia.org/wiki/Tee_(command)

  2. tee 命令基本使用方法、输出到多个文件

    功能说明:读取标准输入的数据,并将其内容输出成文件.语  法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出 ...

  3. Linux Shell脚本入门:tee命令

    用途说明   在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee ...

  4. linux tee 命令详解

    man tee: NAME tee - read from standard input and write to standard output and files SYNOPSIS tee [OP ...

  5. mysql tee 命令

    tee 命令说明: 用过mysql的应该都会知道mysql有一个叫show 的命令,这个命令应该是SQL标准之外的一个扩展:和这个类似mysql还扩展了一个叫tee的命令. tee的功能是把你的所有输 ...

  6. tee命令使用

    需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...

  7. Linux tee命令详解

    Linux tee命令 Linux tee命令用于读取标准输入的数据,并将其内容输出成文件.如果文件指定为"-",则将输入内容复制到标准输出 tee指令会从标准输入设备读取数据,将 ...

  8. Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)

    1.  有时候我们可能须要记录我们对mysql的操作过程,这时我们能够使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql  -u root  -p  --te ...

  9. tee命令详解

    基础命令学习目录首页 参考:http://man.linuxde.net/tee tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin.简单的说就是把数据重 ...

  10. linux系统中,tee命令的使用

    需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...

随机推荐

  1. UDP实现网络通信程序

    VC6.0创建基于UDP协议的网络聊天程序 只有一个工程UDP,服务器和客户端都是这个工程,因为UDP中C/S区分不强化 只讲关键部分,避免累赘 1.为对话框添加控件 2.为控件绑定变量和消息函数 启 ...

  2. 分布式网上商城项目-solr搜索功能错误

    1.RuntimeException错误 java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Invalid ...

  3. css3实现自定义滚动条样式详解

    在写页面的时候有时候滚动条的样式与页面风格不统一这时候就用到了自定义滚动条 1.首先弄清楚页面的滚动条分为哪些部分,在写的时候分为几块 定义滚动条的时候先进行宏观定义,定义滚动条,然后定义滑块,然后定 ...

  4. UIDynamic-吸附-重力-碰撞-物理仿真动画

    现实生活中: 运动场==物理仿真器 跑步==物理仿真行为 人==仿真元素 创建步骤: 1.创建物理仿真器,并且指定仿真范围 2.创建物理仿真行为,并且指定仿真元素 3.将物理仿真行为添加到仿真器中 D ...

  5. thinkphp5访问sql2000数据库

    大家都知道php跟mysql是绝配,但是因为有时候工作需要,要求php访问操作sql2000,怎么办呢? 一般来说有两种方式: 1. sqlsrv驱动方式 2. odbc方式 sqlsrv驱动方式,因 ...

  6. 用elk+filebeat监控容器日志

    elk  为 elasticsearch(查询搜索引擎),logstash(对日志进行分析和过滤,然后转发给elasticsearch),kibana(一个web图形界面用于可视化elasticsea ...

  7. STM32_3 时钟初始化分析

    在startup文件中,调用了2个函数,一个是System_Init, 另一个是main. System_Init()在system_stm32f10x.c 这个文件中,先看一下时钟树,再分析一下这个 ...

  8. Go语言入门(一)特性、安装、环境搭建、第一个程序等

    Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮 ...

  9. MapWinGIS使用

    .net语言中使用MapWinGIS.ocx http://www.cnblogs.com/kekec/archive/2011/03/30/1999709.html 基于MapWinGis的开发探索 ...

  10. 北京Uber优步司机奖励政策(3月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...