Linux _文件操作demo
2016-03-31 13:04
435 查看
main1.c
main2.c
main3.c
main4.c
main5.c
main6.c
#include <stdlib.h> #include <stdio.h> int main(void) { int i; char buff[] = "hello world\n"; write(1, buff, sizeof(buff)); write(2, buff, sizeof(buff)); return 0; }
main2.c
#include <stdio.h> #include <stdlib.h> int main(void) { char buff[1024]; int cnt; cnt = read(0, buff, sizeof(buff)); write(1, buff, cnt); return 0; }
main3.c
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #define FILE1_NAME "shell_program.pdf" #define FILE2_NAME "shell_program2.pdf" int main(void) { int file1, file2; char c; file1 = open(FILE1_NAME, O_RDONLY); if (file1 < 0) { printf("open file %s failed\n", FILE1_NAME); } file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); if (file1 < 0) { printf("open file %s failed\n", FILE2_NAME); } while(read(file1, &c, 1) == 1) { write(file2, &c, 1); } return 0; }
main4.c
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #define FILE1_NAME "shell_program.pdf" #define FILE2_NAME "shell_program2.pdf" int main(void) { int file1, file2; //char c; char buff[1024]; int ret; file1 = open(FILE1_NAME, O_RDONLY); if (file1 < 0) { printf("open file %s failed\n", FILE1_NAME); } file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); if (file1 < 0) { printf("open file %s failed\n", FILE2_NAME); } while((ret = read(file1, buff, sizeof(buff))) > 0) { write(file2, buff, ret); } return 0; }
main5.c
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #define FILE1_NAME "main5.c" #define FILE2_NAME "main5_2.c" #define SIZE 50 int main(void) { int file1, file2; //char c; char buff[1024]; int ret; file1 = open(FILE1_NAME, O_RDONLY); if (file1 < 0) { printf("open file %s failed\n", FILE1_NAME); } file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); if (file1 < 0) { printf("open file %s failed\n", FILE2_NAME); } lseek(file1, -SIZE, SEEK_END); while((ret = read(file1, buff, SIZE)) > 0) { write(file2, buff, ret); } return 0; }
main6.c
#include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #define FILE_NAME "test.txt" int flock_set(int fd, int type) { printf("pid=%d into...\n", getpid()); struct flock flock; flock.l_type = type; flock.l_whence = SEEK_SET; flock.l_start = 0; flock.l_len = 0; flock.l_pid = -1; fcntl(fd, F_GETLK, &flock); if (flock.l_type != F_UNLCK) { if (flock.l_type == F_RDLCK) { printf("flock has been set to read lock by %d\n", flock.l_pid); } else if (flock.l_type == F_WRLCK) { printf("flock has been set to write lock by %d\n", flock.l_pid); } } flock.l_type = type; if (fcntl(fd, F_SETLKW, &flock) < 0) { printf("set lock failed!\n"); return -1; } switch (flock.l_type) { case F_RDLCK: printf("read lock is set by %d\n", getpid()); break; case F_WRLCK: printf("write lock is set by %d\n", getpid()); break; case F_UNLCK: printf("lock is released by %d\n", getpid()); break; default: break; } printf("pid=%d out.\n", getpid()); return 0; } int main(void) { int fd; fd = open(FILE_NAME, O_RDWR|O_CREAT, 0666); if (fd < 0) { printf("open file %s failed!\n", FILE_NAME); } //flock_set(fd, F_WRLCK); flock_set(fd, F_RDLCK); getchar(); flock_set(fd, F_UNLCK); getchar(); close(fd); return 0; }
相关文章推荐
- 《Linux内核设计与实现》Chapter 3 读书笔记
- Linux信号处理
- 《Linux内核设计与实现》第三章学习笔记
- 分析Linux内核创建一个新进程的过程
- 《Linux内核设计与实现》第三章学习笔记
- Linux _文件操作
- Linux 中的零拷贝技术
- Linux内核设计与实现 第三章
- 通过19幅图为你展现CentOS安装全过程
- Centos上的双网卡绑定
- linux netstat 统计连接数
- Linux命令教程
- linux及安全第六周总结——20135227黄晓妍
- centos6.6下安装Gcc4.8.1
- linux下ioctl()函数使用的详细说明
- centos 正确 安装 jdk
- CentOS 7 修改网卡名称为eth0
- CentOS 7 修改网卡名称为eth0
- Centos添加Windows/Centos双系统启动
- 《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁