凡科建站官网网站模板,信托公司网站建设,国家城乡建设部网站首页,网站建设价格标准信息ps#xff1a;提升效率的小tips#xff1a; 灵活运用vim操作命令#xff0c;gg快速跳转到文件开头#xff0c;G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作#xff1a; autocmd BufNewFile …ps提升效率的小tips 灵活运用vim操作命令gg快速跳转到文件开头G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作 autocmd BufNewFile *.c,*.cpp,*.h,*.sh,*.java exec :call SetTitle()
func SetTitle()if filetype ccall setline(1,#include unistd.h)call append(line(.), )call append(line(.)1,int main(int args,char*argv[]))call append(line(.)2,{)call append(line(.)3, )call append(line(.)4,})endif
endfunction1.文件
以下命令都可以在vim编辑器里通过在命令模式下2K跳转查询也可以在终端中man 2 命令查询 a. int open( const char *pathname, int flags,[mode_t mode]) 返回值成功返回文件描述符失败返回-1 flags参数可以填写: O_RDONLY, O_WRONLY, O_RDWR分别表示只读、只写、可读可写, O_CREAT 没有就创建该文件 mode参数与flags参数有关如果flags参数为O_CREAT, 该参数为新建文件的权限值一般用8进制位传入方便阅读且与外部umask掩码有关权限为mode-umask 需要包含下面头文件 #include fcntl.h #include sys/stat.h
b. ssize_t read(int fd, void *buf, size_t count) 返回值成功返回读取的字符长度0说明读到了文件的结尾失败返回-1并且设置errno errno 函数头文件 #include errno.h 输出错误信息perror(error is ) fd : 文件描述符 读取count个字符放到buf中
c. int close(int fd) 返回值成功返回0失败返回-1并设置errno 关闭文件
/*
读文件 输出到终端
*/
#includestdio.h
#include errno.h
#include sys/stat.h
#include unistd.h
#include fcntl.hint main(int args,char* argv[]){int fd open(argv[1], O_RDONLR);if(fd-1){perror(open error);exit(1);}int len;char buf[1024];while((lenread(fd,buf,sizeof(buf)))!0){if(len-1){perror(read error);exit(1);}for(int i0;ilen;i){printf(%c,buf[i]);}printf(\n);}close(fd);return 0;
}d. ssize_t write(int fd, const void *buf, size_t count) 作用向文件描述符fd指向的文件写入count个buf其实地址开始的字符 返回值成功返回写入成功的字节数错误返回-1且设置errno
e. off_t lseek(int fd, off_t offset, int whence) 作用将光标移到whence位置 offset: 偏移位置 whence常用参数 SEEK_SET: 移动到设置的offset位置 SEEK_CUR: 移动到现在光标offset位置 SEEK_END移到到文件末尾offset位置 f. dup2(int oldfd, int newfd) 作用用newfd指向oldfd文件描述符
/*
文件名file_write_arm.c
作用写文件与显示写入内容
author: LiuGuoyong
date:2023/12/27
*/
#includestdio.h
#include errno.h
#include sys/stat.h
#include unistd.h
#include fcntl.hint main(int args,char* argv[]){int fd open(argv[1], O_WRONLY|O_CREAT,0777);int fd2 open(argv[2], O_WRONLY|O_CREAT,0777);char buf[2] {1,0}; dup2(STDOUT_FILENO,fd); //将fd指向了标准输出向fd中写入会直接显示到终端中if(fd-1){perror(open fd error);exit(1);}if(fd2-1){perror(open fd2 error);exit(1);}while(1){lseek(fd,0,SEEK_SET);lseek(fd2,0,SEEK_SET);write(fd,buf,1);write(fd2,buf[1],1);sleep(2);lseek(fd,0,SEEK_SET);lseek(fd2,0,SEEK_SET);write(fd,buf[1],1);write(fd2,buf,1);sleep(2);}close(fd);close(fd2);return 0;
}2. 进程
pid_t fork()创建子进程 返回值0子进程-1失败并且生成errno0: 子进程pid号waitpid(pid_t pid,int *wstatus, int options)回收子进程 pid: -1 任意子进程 -1 回收进程组id等于 pid的绝对值 0 子进程创建过程 0 子进程pid号 pid_t getpid() 获取进程id
/*
名称pid_arm.c
*/#include unistd.h
#include stdio.h
#include sys/wait.hint main(void){pid_t pid;int i 0;for(;i5;i){if((pid fork())0)break;} if(i 5){sleep(5);waitpid(-1,NULL,0);printf(pid is %d\n,getpid());}else{sleep(i);printf(pid is %d\n,getpid());}return 0;
}编译发送同前 效果