![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux 系统编程
古木恒一
这个作者很懒,什么都没留下…
展开
-
利用opendir与readdir函数实现ls功能
函数原型DIR *opendir(char *name);int closedir(DIR *dp);struct dirent *readdir(DIR *dp);struct dirent{inodechar dname[256]}#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <pthread..原创 2021-03-13 16:52:11 · 582 阅读 · 0 评论 -
web服务器框架
web服务器实现步骤#include <stdio.h>#include <string.h>#include <stdlib.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/wait.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h&.原创 2021-03-13 16:35:35 · 300 阅读 · 0 评论 -
fcntl()不用重新打开文件就能修改文件属性
普通文件不会阻塞fcntl:int flags = fcntl(fd, F_GETFL);flags |= O_NONBLOCK; 位图–二进制位int ret = fcntl(fd, F_SETFL, flags);获取文件状态: F_GETFL设置文件状态: F_SETFL#icnlude <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#.原创 2021-03-13 14:45:58 · 122 阅读 · 0 评论 -
利用unlink特性创建temp文件
函数原型int unlink(const char *pathname);执行unlink()函数后删除文件,先检查文件系统中该文件的连接数是否为1,如果不是1说明此文件还有其他链接对象,因此只对此文件的连接数进行减1操作。若连接数为1,并且在此时没有任何进程打开该文件,此内容才会真正地被删除掉。在有进程打开此文件的情况下,则暂时不会删除,直到所有打开该文件的进程都结束时文件就会被删除。#include <stdio.h>#include <stdlib.h>#in.原创 2021-03-12 23:17:53 · 115 阅读 · 0 评论 -
stat()函数 获取文件类型
1.函数原型int stat(const char *path, struct stat *buf);2.函数结构体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; / number of hard links /.原创 2021-03-12 23:07:12 · 814 阅读 · 0 评论 -
lseek函数:
/*lseek函数: 文件偏移 linux中可以使用系统函数lseek来修改文件偏移量(读写位置) fseek的作用及参数 SEEK_SEK SEEK_CUR SEEK_END int fseek(FILE *stream, long offset, int whence)成功返回0,失败-1 特别:超出文件末尾位置返回 0;往回超出文件头位置返回-1 off_t lseek(int f原创 2021-03-12 22:53:23 · 269 阅读 · 0 评论 -
2021-03-12
函数原型int truncate(const char *path,off_t length);#include <stdio.h>#include <srdlib.h>#include <string.h>#include <unistd.h>int main(){ int ret = truncate("filename",250); //文件名 文件大小 return 0;}原创 2021-03-12 22:45:16 · 81 阅读 · 0 评论 -
利用lseek函数获取文件大小
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <unistd.h>#include <fcntl.h>int main(int argc char *argv[]){ int fd = open(argv[1], O_RDWR); if(fd == -1) { perror("open er原创 2021-03-12 22:39:04 · 756 阅读 · 0 评论 -
利用read、write函数实现copy功能
ssize_t read(int fd, void *buf, size_t count);参数:fd:文件描述符buf:存数据的缓冲区count:缓冲区的大小返回值:0 读到文件末尾成功; >0 实际从fd读到的数据大小失败:-1,并设置errno将文件设置为非阻塞,当read没有数据时返回-1 且errno设置为EAGAIN or EWOULDBLOCKssize_t write(int fd, const void *buf, size_t count);参数:fd.原创 2021-03-12 22:32:12 · 382 阅读 · 0 评论 -
文件设置为非阻塞
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#define MSG_TRY "try again\n"#define MSG_TIMEOUT "time out\n"int main(int argc, char *argv[]){ ch原创 2021-03-12 22:25:09 · 224 阅读 · 0 评论 -
read()与write()
#####1. 回显STDIN_FILENO事件#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ int n; char buf[10]; while((n = read(STDIN_FILENO, buf, 10)) != 0) //读取 输入设备的数据 { //将将键盘输入设备获取到的数据打印到屏幕中 write(STDOUT_FILENO, buf, n);原创 2021-03-12 22:00:42 · 134 阅读 · 0 评论 -
fopen()函数
open()函数1.函数原型FILE *fopen(const char *path, const char *mode);原创 2021-03-12 21:53:21 · 545 阅读 · 0 评论 -
open()函数
open函数原创 2021-03-12 18:06:00 · 159 阅读 · 0 评论