//read函数
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> /*
STDIN_FILENO:标准输入,值是0
STDOUT_FILENO:标准输出,值是1
STDERR_FILENO:标准错误,值是2
头文件是 unistd.h read(文件标识符,缓冲区,缓冲区大小)函数是从某个文件中读取缓冲区大小的数据
ssize_t read(int fd, void *buf, size_t count);
read()函数的返回值是输入字符的个数+1(+1是因为系统会为输入的字符串加上'\0')
read()相比于scanf()优势在于read()可以读取空格,而scanf()遇到空格结束
但是read不能将数字字符串直接转化成int型,需要调用atoi()函数
read()函数可以读取键盘上输入的每个字符包括回车换行 atoi()函数的头文件是stdlib.h,功能是将字符串转成数字
*/ int main(int arg,char *args[])
{
char buf[]={};
int numx=;
int index=read(STDIN_FILENO,buf,sizeof(buf));
printf("返回值是%d,输入字符串是%s\n",index,buf);
numx=atoi(buf);
printf("输入的数字是%d\n",numx);
return ;
}
//write函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> /*
ssize_t write(int fd, const void *buf, size_t count);
write()函数的返回值是写入字符串的大小(不包含'\0')
write()函数向指定文件标识符输出缓冲区数据
*/ int main(int arg,char *args[])
{
char buf[]={};
strcpy(buf,"fly with you!\n");
int index=write(STDOUT_FILENO,buf,strlen(buf));
printf("返回值是%d,\n",index);
return ;
}
//open函数|close()函数
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h> /*
int open(const char *pathname, int flags);
Opne试图打开参数pathname中的一个文件。
参数flags指定访问该文件的方式。
必须把flags设置为O_RDONLY,O_WRONLY,O_RDWR,O_CREAT,O_APPEND分别表示只读、只写、读写、如果文件存在就创建、追加。
open成功后会返回一个文件描述符。
open失败后会返回-1,并设置errno变量 errno是int型,表示错误编号,头文件是errno.h
strerror()函数是打印错误信息,头文件是string.h
*/ int main(int arg,char *args[])
{
if(arg<)
{
printf("请输入一个参数!\n");
return ;
}
int fd=open(args[],O_RDONLY);
if(fd==-)
{
printf("错误信息:%s\n",strerror(errno));
}else
{
printf("文件标识符是%d\n",fd);
char buf[]={};
//读取当前文件的内容
read(fd,buf,sizeof(buf)-);
printf("%s\n",buf);
close(fd);
}
return ;
}
使用fstat函数获取文件信息。
int fstat(int fd,struct stat *buf)
参数fd必须使用open()函数调用返回的有效文件描述符
使用stat函数获取文件信息
int stat(const char *path,struct stat *buf)
参数path是路径加文件名的字符串 结构体stat
struct stat
{
dev_t st_dev; /*ID of device containing file*/
ino_t st_ino; /*inode number*/
mode_t st_mode; /*protection*/
nlink_t st_nlink; /*numbers of hard links*/
uid_t st_uid; /*user ID of owner*/
gid_t st_gid; /*group ID of owner*/
dev_t st_rdev; /*device ID (if special file)*/
off_t st_size; /*total size,in bytes*/
blksize_t st_blksize; /*blocksize for filesystem I/O*/
blkcnt_t st_blocks; /*number of blocks allocated*/
time_t st_atime; /*time of last access*/
time_t st_mtime; /*time of last modification*/
time_t st_ctime; /*time of last status change*/
}; 为了正确解释文件类型,有一套宏能够计算stat借口的st_mode成员。
S_ISREG(m) is it a regular file?
S_ISDIR(m) directory?
S_ISCHR(m) character device?
S_ISBLK(m) block device?
S_ISFIFO(m) FIFO (named pipe)?
S_ISLNK(m) symbolic lin?(Not in POSIX.-)
S_ISSOCK(m) socket?(Not in POSIX.-)
//fstat()函数
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h> int main(int arg,char *args[])
{
if(arg<)
{
printf("请输入一个参数!\n");
return ;
}
//open file
/*
备注:如果是以追加的方式打开文件,必须使用 O_RDWR|O_APPEND;单独的是O_APPEND没有效果!
*/
int fd=open(args[],O_RDONLY);
//Judgment file identifier
if(fd==-)
{
printf("error msg:%s\n",strerror(errno));
}else
{
printf("file identifier:%d\n",fd);
//define struct stat
struct stat buf;
//get file stat
fstat(fd,&buf);
//judge file tyep
if(S_ISREG(buf.st_mode))
{
printf("this is regular file!\n");
}else if(S_ISDIR(buf.st_mode))
{
printf("this id directory!\n");
}
//show file size
printf("file size:%d\n",buf.st_size);
//close file
close(fd);
}
return ;
}
getpass()函数
读写用户输入,屏幕不回显(一般用于输入密码不显示)
char * getpass(const char * prompt);
getpass用于从键盘读取用户输入,但屏幕不回显。
参数prompt为屏幕提示字符。
函数返回值为用户键盘输入字符串
//getpass()函数的使用
#include <stdio.h>
#include <unistd.h> int main(int arg,char *args[])
{
char *s=getpass("input password:");
printf("your password :%s\n",s);
return ;
}

Linux 文件管理(系统函数)的更多相关文章

  1. Linux常用系统函数

    Linux常用系统函数 一.进程控制 fork 创建一个新进程clone 按指定条件创建子进程execve 运行可执行文件exit 中止进程_exit 立即中止当前进程getdtablesize 进程 ...

  2. 标准c库函数与Linux下系统函数库 区别 (即带不带缓冲区的学习)

    我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open().close().write().read()等,而标准C语言的库函数中也有一套对文件的操作函数fop ...

  3. linux文件管理 -> 系统文件属性

    -rw-------. 1 root root 4434 May 30 13:58 ks.cfg -rw-------. ①:文件类型与权限 ②:硬链接次数 root ③:所属用户 root ④:所属 ...

  4. linux文件管理 -> 系统压缩打包

    如果希望windows和Linux互相能使用的压缩工具, 建议.zip格式 压缩的好处主要有: 节省磁盘空间占用率 节省网络传输带宽消耗 网络传输更加快捷 Linux系统常见的后缀名所对应的压缩工具 ...

  5. 【Linux程序设计】之环境系统函数综合实验

    这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux环境下系统函数综合实验 实验目的:熟悉并掌握Linux环境下数学函 ...

  6. Linux下系统时间函数、DST等相关问题总结(转)

    Linux下系统时间函数.DST等相关问题总结 下面这个结构体存储了跟时区相关的位移量(offset)以及是否存在DST等信息,根据所在的时区信息,很容易找到系统时间与UTC时间之间的时区偏移,另外根 ...

  7. linux 系统函数之 (dirname, basename)【转】

    转自:http://blog.csdn.net/peter_cloud/article/details/9308333 版权声明:本文为博主原创文章,未经博主允许不得转载. 除非你的原件考虑跨平台. ...

  8. linux 系统函数 basename和dirname

    在linux系统中有这样两个系统函数,basename 和  dirname 1.basename 用于 获取文件名, 1.1 当给定扩展名作为参数之后,甚至可以直接获取文件名 2.与basename ...

  9. Linux网络编程2——系统函数

    socket信息数据结构 #include <netinet/in.h> struct sockaddr { unsigned short sa_family; /*地址族*/ ]; /* ...

  10. 标准c库函数和linux系统函数的关系

    c库IO函数的工作流程 c库函数与系统函数的关系 虚拟地址空间 文件描述符

随机推荐

  1. SeaJS入门

    Sea.js是一种模块加载工具 官网:http://seajs.org/docs/ 使用步骤: 1.下载sea.js 2.引入sea.js 3.加入配置代码 // seajs 的简单配置 seajs. ...

  2. 获取配置文件中的key的value

    获取App.config文件的key的value System.Configuration.ConfigurationManager.AppSettings["keyName"] ...

  3. JVM OQL查询语言

    OQL查询语言 SELECT Clause The SELECT clause determines what to extract from the heap dump. To display ob ...

  4. 异常值监测的方法 Tukey test

    参考: https://www.zhihu.com/question/38066650

  5. linux基础-第十八单元_nginx部署

    一.基本环境配置 1.1.安装常用软件 yum install wget -y 1.2.Install yum repo mv /etc/yum.repos.d/CentOS-Base.repo /e ...

  6. 理解JS中的模块规范(CommonJS,AMD,CMD)

    随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做 ...

  7. iOS学习笔记之蓝牙(有关蓝牙设备mac地址处理) 2

    1.创建中心设备,并设置代理 一般情况下,手机是中心设备,蓝牙设备是外围设备. self.centralManager = [[CBCentralManager alloc] initWithDele ...

  8. Unity学习笔记 之 关于 Unity UI 的 Slider 的代码记录

    代码例如以下: using UnityEngine; using System.Collections; //1.引入 UI . using UnityEngine.UI; public class ...

  9. Win10 系统变成黑白屏幕了怎么办?

      快捷键"windows徽标键+Ctrl+C"可以切换屏幕黑白了 这是win自带的一个"应用颜色筛选器", 桌面右键,选择个性化 点到背景页面,下拉,点击&q ...

  10. 梳理caffe代码blob(三)

    贯穿整个caffe的就是数据blob: #ifndef CAFFE_BLOB_HPP_ #define CAFFE_BLOB_HPP_ #include <algorithm> #incl ...