文件
thomas_blog
路漫漫其修远兮
展开
-
umask
每创建一个文件总是有一个默认权限, 这个权限就是umask干的事情 在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值目录创建缺省权限为: 777 (rwx rwx rwx) 文件创建缺省权限为: 666 (rw- rw- rw-)umask是从权限中“拿走”相应的位即可例: umask值0 0 2 目录权限 rwx rwx r-x (775) 文件权限 r原创 2015-03-26 18:30:36 · 588 阅读 · 0 评论 -
获取当前目录
1. realpathchar *realpath(const char *path, char *resolved_path); 函数说明:realpath()用来将参数path所指的相对路径转换成绝对路径后存于参数resolved_path所指的字符串数组或指针中{ char resolved_path[80]; realpath("./", resolved_path);转载 2015-04-28 14:42:29 · 600 阅读 · 0 评论 -
文件锁 flock/fcntl
多个进程同时操作一个文件flockint flock(int fd, int operation);LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定(读锁定) LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定 LOCK_UN 解除文件锁定状态 LOCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合fcn转载 2017-04-27 14:31:51 · 1444 阅读 · 0 评论 -
pipe管道
进程I/OFILE *popen(const char *command, const char *type);创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程 type: 如果 type 是 “r” 则文件指针连接到 command 的标准输出;如果 type 是 “w” 则文件指针连接到 command 的标准输入 command: 一个指向以转载 2015-06-26 11:21:26 · 621 阅读 · 0 评论 -
linux syslog
void openlog(const char *ident, int option, int facility);void syslog(int priority, const char *format, ...);option:LOG_CONS LOG_PIDfacility:LOG_SYSLOG LOG_USER LOG_LOCAL0 through LOG_LOCAL7level:LOG_ER转载 2017-05-12 17:44:51 · 489 阅读 · 0 评论 -
有名管道
创建int mkfifo(const char *pathname, mode_t mode);注:有名管道需要用open函数打开以后使用,如果以读方式打开,会阻塞到有写方打开管道,同样以写方式打开会阻塞到以读方式打开;在该程序中一定会先执行子进程,因为父进程读管道时,管道中没有数据,也会阻塞read到有write写入到管道中举例int wfd;int rfd;char buf[100] = {转载 2015-09-24 12:20:51 · 390 阅读 · 0 评论 -
linux临时文件
临时文件是一个暂时用来存储数据的文件。如果使用建立普通文件的方法来创建文件,则可能遇到文件是否存在,是否有文件读写权限的问题,而创建的时候希望一次创建成功,不会覆盖可能重名的文件tmpfile - create a temporary file in a safe mannertempnam - create a name for a temporary fil转载 2015-05-07 11:48:01 · 1926 阅读 · 0 评论 -
stat函数
int stat(const char *path, struct stat *buf);int fstat(int filedes, struct stat *buf);int lstat(const char *path, struct stat *buf);int access(const char *pathname, int mode);转载 2015-04-16 12:03:19 · 654 阅读 · 0 评论 -
内存文件系统
tmpfs 虚拟内存文件系统tmpfs是一种基于内存的文件系统,和虚拟磁盘ramdisk比较类似像。tmpfs可以使用RAM,但它也可以使用swap分区来存储。传统的ramdisk是个块设备,要用mkfs来格式化它,才能真正地使用它。而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。tmpfs是最好的基于RAM的文件系统注:使用tmpfs,编译内核时得选择”虚拟内存文件系统支持(V转载 2015-04-15 15:58:35 · 1007 阅读 · 0 评论 -
Linux open fopen fdopen
int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);以下三个常量中必选一个:O_RDONLY //只读模式O_WRONLY //只写模式O_RDWR //读写模式以下常量选用:O_APPEND //每次写操作都写入文件的末尾转载 2015-06-27 14:05:11 · 819 阅读 · 0 评论 -
文件流
mp3、mp4、txt、bmp、jpg、exe、rmvb等等 1. 为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在于这些文件里面存放的数据集合所遵循的存储规则不一样 2. 它有固定的格式,哪一段到哪一段,哪个偏移到哪个偏移应该存放什么数据是规定好了的。比如有文件头,一般是一个结构体,存放的文件的一些信息,如图片的大小,像素等等。再后来有数据区原创 2015-03-30 09:55:26 · 484 阅读 · 0 评论 -
c文件操作
FILE *fopen(const char *path, const char *mode); r:Open text file for reading. The stream is positioned at the beginning of the file. r+:Open for reading and writing. The stream is positioned at转载 2017-05-18 23:06:58 · 269 阅读 · 0 评论 -
file结构体
定义在include/linux/fs.hstruct file{ union { struct list_head fu_list; //文件对象链表指针linux/include/linux/list.h struct rcu_head fu_rcuhead; //RCU(Read-Copy Update)是Linux 2.6内核中新的锁机制转载 2016-05-29 23:20:19 · 296 阅读 · 0 评论 -
无名管道
主要用于父进程与子进程之间int pipe(int pipefd[2]);pipefd[0]为管道里的读取端 pipefd[1]则为管道的写入端举例int fd[2];char buf[100] = {0};pipe(fd); //创建管道if(fork() == 0){ dup2(1, fd[1]); //标准输出到管道输入 while(1) {转载 2015-09-24 13:36:39 · 280 阅读 · 0 评论 -
文件换行
\n是软回车,linux规则 fputc(‘\n’,fp); \x0D\x0A是硬回车dos,windows规范 fputc(‘\xd’, fp); fputc(‘\xa’, fp);转载 2015-04-30 11:25:34 · 373 阅读 · 0 评论 -
matlab C程序
通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度 Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种 注:在Matlab里,矩阵第一行是从1开始的1. 主接口#include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArra转载 2015-05-13 21:24:02 · 481 阅读 · 0 评论 -
access truncate
int access(const char *pathname, int mode);确定文件或文件夹的访问权限//unistd.h#define R_OK 4 /* Test for read permission. */#define W_OK 2 /* Test for write permission. */#define X_OK 1 /* Test for execute perm转载 2015-06-17 16:33:44 · 714 阅读 · 0 评论 -
pwrite
写入起始地址的偏移量,写入地址=文件开始+offset 注意:执行后,文件偏移指针不变ssize_t pread(int fd, void *buf, size_t count, off_t offset);ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);转载 2015-05-30 12:07:03 · 598 阅读 · 0 评论 -
unlink remove
int unlink(const char *pathname);删除一个文件的目录项并减少它的链接数unlink()会删除参数pathname指定的文件。如果该文件名为最后连接点,但有其他进程打开了此文件,则在所有关于此文件的文件描述词皆关闭后才会删除。如果参数pathname为一符号连接,则此连接会被删除关闭一个文件时,内核首先检查打开该文件的进程数。如果该数达到0,然后内核检查其链接数,转载 2015-06-09 16:41:41 · 503 阅读 · 0 评论 -
chattr lsattr文件隐藏属性
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]lsattr [-adlRvV][文件或目录...]改变/显示文件隐藏属性chattr 命令的作用很大。通过chattr命令修改属性能够提高系统的安全性 lsattr 命令显示文件系统属性与ls 显示的UNIX 文件系统属性是两个不同的概念。lsattr实现的属性是文件系统的物理属性,而ls显示的文件属性是操作转载 2015-06-10 13:36:23 · 494 阅读 · 0 评论 -
宏定义
宏参数# 字符串化操作符#define example(instr) #instrstring str=example1(abc); 将会展成:string str="abc";注:1.忽略传入参数名前面和后面的空格2.当传入参数名间存在空格时,编译器将会自动连接各个子字符串,用每个子字符串中只以一个空格连接,忽略其中多余一个的空格## 符号连接操作符将宏定义的多个形参成一个实际参数名转载 2015-04-27 19:01:11 · 442 阅读 · 0 评论 -
Red Hat安装虚拟带库
1、安装五个包# yum -y install lzo-devel.x86_64 sg3_utils lsscsi mtx mt-st2、下载最新版的mhvtlmhvtl-2014-09-07.tgz3、编译内核模块# cd mhvtl-1.5# cd kernel# make# make install4、创建mhvtl用户# useradd -c "vitrual mhvtl" -M vt转载 2015-06-13 18:41:10 · 1293 阅读 · 0 评论 -
文件夹操作
1. opendirDIR *opendir(const char *name);DIR *fdopendir(int fd);打开一个目录,失败返回空2. readdirstruct dirent *readdir(DIR *dirp);int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);读目录struc转载 2015-08-17 16:10:38 · 419 阅读 · 0 评论 -
linux pid文件
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件作用 防止进程启动多个副本 有写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中fcntlint fcntl(int fd, int cmd, ... /* arg */ );int fcntl(int fd, int cmd, struct flock *lock);F_GETLK 取得文件锁转载 2015-09-14 11:43:08 · 2145 阅读 · 0 评论 -
FUSE用户空间文件系统
Filesystem in Userspace,是Linux 中用于挂载某些网络空间,如SSH,到本地文件系统的模块,在SourceForge上可以找到相关内容(http://sourceforge.net/)//FUSE和内核的通信过程 +----------------+ | myfs /tmp/fuse |转载 2015-04-17 16:15:29 · 782 阅读 · 1 评论 -
Linux文件缓冲区
1. 数据缓冲区C 程序员经常使用动态分配的缓冲区(通过调用 malloc() / free() 函数)在函数之间传递数据2. 为什么需要缓冲首先在若干字符作为一个块传输比逐个发送字符耗费的时间少。其次如果你输入有误。就可以使用您的键盘更改功能来修正错误。并且最终按下回车,就可以发送正确的输入3. 缓冲区的分类缓冲分为两类,完全缓冲和行缓冲1.对于完全缓冲来说,缓冲区满时,缓冲区会被清空。此时缓冲区转载 2015-04-16 15:52:13 · 1592 阅读 · 0 评论