4-1:实现tee命令
#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命令的更多相关文章
- tee命令
tee命令 http://liubin.blog.51cto.com/282313/131298 https://en.wikipedia.org/wiki/Tee_(command)
- tee 命令基本使用方法、输出到多个文件
功能说明:读取标准输入的数据,并将其内容输出成文件.语 法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出 ...
- Linux Shell脚本入门:tee命令
用途说明 在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee ...
- linux tee 命令详解
man tee: NAME tee - read from standard input and write to standard output and files SYNOPSIS tee [OP ...
- mysql tee 命令
tee 命令说明: 用过mysql的应该都会知道mysql有一个叫show 的命令,这个命令应该是SQL标准之外的一个扩展:和这个类似mysql还扩展了一个叫tee的命令. tee的功能是把你的所有输 ...
- tee命令使用
需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...
- Linux tee命令详解
Linux tee命令 Linux tee命令用于读取标准输入的数据,并将其内容输出成文件.如果文件指定为"-",则将输入内容复制到标准输出 tee指令会从标准输入设备读取数据,将 ...
- Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)
1. 有时候我们可能须要记录我们对mysql的操作过程,这时我们能够使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql -u root -p --te ...
- tee命令详解
基础命令学习目录首页 参考:http://man.linuxde.net/tee tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin.简单的说就是把数据重 ...
- linux系统中,tee命令的使用
需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...
随机推荐
- Linux中文件函数(二)
一.link.linkat.unlink.unlinkat.remove函数 创建一个指向现有文件的链接的方法是使用link函数或linkat函数.函数的原型为: #include <unist ...
- webpack新建项目
记录如何搭建一个最简单的能跑的项目! 1.首先,需要下载安装nodejs环境,可以直接百度搜索nodejs去官网下载符合你操作系统的环境. 安装完nodejs后,在控制台输入命令: npm -vers ...
- JS 原型总结
参考: (从内存角度)简单类型与复杂类型及原型链
- Python对文件目录的操作
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录 ...
- 一、PHP基础-安装PHP集成环境
目录 PHP运行集成环境下载 phpStudy集成环境安装 XAMPP集成环境安装 WampServer环境安装 作者:吴耀田 个人博客:http://www.cnblogs.com/isaacwy ...
- 帝国CMS如何禁止内容关键字替换ALT和title中的关键词为链接
很多帝国cms用户喜欢使用关键字替换来实现文章自动内链的方法. 为什么要用关键词替换功能呢?这关系到站内优化,下面直接进入正题. 解决办法:打开e/class/functions.php 查找 '/' ...
- yii学习笔记(4),获取请求数据的request组件
yii在控制器中获取请求数据需要通过request组件来完成 <?php namespace app\controllers; use yii; use yii\web\Controller; ...
- vowels_单元音
vowels(美式): 单元音: [i]:需要用劲喊出类似于“yi”的四声,费力咧开嘴,单词eat.need.thief.meet. [?]:卷舌音,单词bird.her.worry.certain. ...
- shell之lvm
#!/bin/bash #this script for LVM echo "Initial a disk..." echo -e "\033[31mWarning: ...
- sql,lambda,linq语句
实例 Code 查询Student表的所有记录. select * from student Linq: from s in Students select s Lambda: Students.Se ...