
linux
qwertdsdf
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux runlevel
linux runlevel有7个等级:0:直接关机1:single user mode(单人维护模式)2:multi-user,without NFS (多用户,没有网络共享服务)3:full multi-user mode(完整的网络功能)4:保留5:X11(图形界面)6: 重启 单人维护模式只能以root身份登陆...原创 2018-06-04 11:18:53 · 442 阅读 · 0 评论 -
进程控制
ID为0的进程通常为调度进程,常被称为交换进程,也被称为系统进程。ID为1的进程通常是init进程,该进程负责在内核自举后启动一个unix系统。fork函数:创建子进程#include <unistd.h> pid_t fork(void);成功返回子进程pid,0;出错返回-1一次调用,二次返回。(实质是由一个进程->二个进程,然后各自返回)返回给父进程该子进程的pid返回给子...原创 2018-06-10 20:14:51 · 137 阅读 · 0 评论 -
fork函数
fork之后是父进程先执行还是子进程先执行是不确定的,这取决于内核所用的调度算法。原创 2018-06-10 21:43:04 · 159 阅读 · 0 评论 -
进程终止
进程有5中正常终止以及3中异常终止方式。5中正常终止:main函数内执行return语句。等效于调用exit调用exit函数调用_exit或_Exit函数进程最后一个线程在其启动例程中执行return语句进程的最后一个线程调用pthread_exit函数3中异常终止:调用abort。它产生SIGABRT信号当进程接收到某些信号最后一个线程对“取消”请求做出相应C程序如何启动和终止:...原创 2018-06-30 10:21:34 · 776 阅读 · 0 评论 -
linux shell
两种运行脚本的方式:1.将脚本作为bash的命令行参数2.授予脚本执行权限,将其变为可执行文件在bash中,每个命令是通过分号或换行符来分割的。例:cmd1;cmd2等同于cmd1cmd2默认情况下,echo在每次调用后会添加一个换行符。可以用-n来忽略换行。使用不带引号的echo时,没法在所要显示的文本中使用分号。变量替换在单引号中无效。(例:echo '$PATH' 会打印出$PATH,而ec...原创 2018-06-26 09:46:47 · 178 阅读 · 0 评论 -
linux shell (2)
重定向:截断 >追加 >>将标准输出与标准错误分别重定向 ls - 2> 3.txt 1> 4.txt将标准输出与标准错误重定向到同一个文件 ls - &> 5.txt...原创 2018-06-26 11:03:20 · 128 阅读 · 0 评论 -
文件截断
将一个文件的长度截断为0是一个特例,可以在open的时候使用O_TRUC来实现,为了截断文件可以调用函数truncate和ftruncate.#include <unistd.h> int truncate(const char *pathname, off_set len); int ftruncate(int fd, off_st len);执行成功返回0,出错返回-1将一个现有文...原创 2018-07-08 09:34:16 · 3131 阅读 · 2 评论 -
文件系统
我们可以把一个磁盘分成一个或多个分区,每个分区包含一个文件系统,i节点是固定长度的记录项,包含文件的大部分信息。上图中有两个目录项指向同一个i节点。(目录项包含节点编号和文件名)只有当文件的目录项为0时,才能删除该文件。(用ulink函数来删除目录项)i节点包含文件的信息:文件类型、文件访问权限位、文件长度和指向文件的数据块的指针等。...原创 2018-07-08 10:44:17 · 132 阅读 · 0 评论 -
进程间通信
经典的IPC:管道、FIFO、消息队列、信号量以及共享存储原创 2018-07-02 19:53:05 · 121 阅读 · 0 评论 -
进程间通信-共享存储
共享存储允许两个或多个进程共享一个给定的存储区。因为数据不需要在客户进程和服务器进程之间复制,所以这是最快的一种IPC.若服务器进程正在将数据放入共享存储区,则在它完成这一操作之前,客户进程不应该去读取这些数据。内核为每个共享存储段维护一个结构。结构如下: // 在 /usr/include/linux/shm.hshmget函数:可以获得一个共享存储标识符#include <sys/sh...原创 2018-07-04 10:10:45 · 335 阅读 · 0 评论 -
进程间通信-存储I/O映射
存储I/O映射能将磁盘文件映射到存储空间的一个缓冲区上,于是,从缓冲区读数据时,就相当于读文件中的相应字节。mmap函数:将文件映射到一个存储区域#include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flag, int fd, off_t off);执行成功返回映射区的起始地址,出错返回MAP_FA...原创 2018-07-04 11:17:07 · 259 阅读 · 0 评论 -
回收子进程
子进程在父进程调用fork后生成的,如果父进程在子进程之前终止,那么子进程的父进程将改变为init进程。我们称这些进程由init进程收养。在一个进程终止时,内核会逐个检查所有活动进程,如果发现它是正要结束进程的子进程,则将该进程的父进程更改为init,这样就保证了每个进程都有一个父进程。...原创 2018-06-28 20:17:26 · 842 阅读 · 0 评论 -
环境表
环境表是一个字符指针数组: char *environ[];全局变量environ包含该指针数组的地址每个指针包含一个以null结尾的字符串的地址称environ为环境指针,指针数组为环境表,各指针指向的字符串为环境字符串使用前需要先声明:extern char **environ;取得环境变量值:#include <stdlib.h> char *getenv(const char ...原创 2018-06-10 10:02:55 · 571 阅读 · 0 评论 -
fcntl函数
fcntl:可以改变已经打开文件的属性#include <fcntl.h> int fcntl(int fd, int cmd, ...);复制一个已有的文件描述符(cmd=F_DUPFD或F_DUPFD_CLOEXEC);获取/设置文件描述符标志(cmd=F_GETFD或F_SETFD);获取/设置文件状态标志(cmd=F_GETFL或F_SETFL);获取/设置异步I.O所有权(c...原创 2018-06-09 20:00:29 · 753 阅读 · 0 评论 -
ubuntu16.04 php无法正常解析
安装好apache2 :apt-get install apache2安装好php7.0 libapache2-mod-php7.0:apt-get install php7.0 libapache2-mod-php7.0可以正常访问html网页:但是无法打开php文件,php文件写法如下:处理:将上述代码改成如下即可。或者将php配置文件中的Off改为On即可。...原创 2018-06-11 17:10:06 · 3537 阅读 · 0 评论 -
ubuntu 16.04 apt源使用阿里云镜像
备份原来的源sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakcup编辑原来的文件sudo vim /etc/apt/sources.list[plain] view plain copydeb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiv...转载 2018-06-07 13:46:10 · 1584 阅读 · 0 评论 -
文件I/O函数
打开文件: open openat#include <fcntl.h> int open(const char *path, int oflag, ..); int openat(int fd,const char *path, int oflag, ..);成功返回文件描述符,失败返回-1关闭文件:close#include <unistd.h> int close(i...原创 2018-06-08 21:23:03 · 239 阅读 · 0 评论 -
缓冲区数据写入硬盘
为了避免对硬盘的频繁读写,数据一般存放在缓冲区。什么情况下会把缓冲区的数据写入到磁盘中?1.通过调用fflush函数刷新缓冲区2.缓冲区已满(8k)3.正常关闭文件调用fclose主函数调用return调用exit函数...原创 2018-06-08 21:49:12 · 3448 阅读 · 0 评论 -
stat、fstat、fstatat和lstat函数
4个stat函数:#include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); int fstat(int fd, struct stat *buf); int lstat(const char *restrict pathname, struct stat *re...原创 2018-06-09 15:02:29 · 576 阅读 · 0 评论 -
access和faccessat函数
access和faccessat函数按实际用户ID和实际组ID进行访问权限测试#include <unistd.h> int access(const char *pathname, int mode); int faccessat(int fd, const char *pathname, int mode, int flag);成功返回0,出错返回-1mode值可以为:F_OK ...原创 2018-06-09 15:11:39 · 1046 阅读 · 0 评论 -
chmod、fchmod和fchmodat函数
更改现有文件的访问权限#include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); int fchmodat(int fd, const char *pathname, mode_t mode, int flag);成功返回0,出错返回-1...原创 2018-06-09 15:31:20 · 698 阅读 · 0 评论 -
进程状态
在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为初始态,终止态,运行态,就绪态,阻塞态。运行态:该时刻进程实际占用CPU就绪态:可运行,但因为其他进程正在运行而暂时停止阻塞态:除非某种外部事件发生,否则进程不能运行当一个进程在逻辑上不能继续运行时,它就会被阻塞,典型的例子是它在等待可以使用的输入,如:cat file |grep xxx grep被阻塞转换2...原创 2018-06-16 20:36:43 · 349 阅读 · 0 评论 -
exec函数
当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,新程序从main函数开始执行,调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用磁盘上的一个新程序替换当前进程的正文段、数据段、堆和栈。#include <unistd.h> int execl(const char *pathname, const char *arg0, ...); int exec...原创 2018-06-16 21:52:41 · 197 阅读 · 0 评论 -
目录操作函数
更改当前工作目录:#include <unistd.h> int chdir(const char *path); int fchdir(int fd);成功返回0,出错返回-1创建目录: #include <sys/stat.h> int mkdir(const char *pathname, mode_t mode); int mkdirat(int fd, char ...原创 2018-06-09 18:08:26 · 251 阅读 · 0 评论 -
文件描述符的复制
#include <unistd.h> int dup(int fd); int dup2(int fd, int fd2);成功返回文件描述符,出错返回-1dup返回当前可用文件描述符中的最小数值。dup2中,fd2指定新的文件描述符,如果fd2已经打开,先将其关闭;如果fd等于fd2,返回fd2,不关闭。...原创 2018-06-09 19:49:03 · 310 阅读 · 0 评论 -
locale设置语言环境
在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持。locale的命名规则为语言_地域.字符集,如zh_CN.GBK,zh代表中文, CN代表大陆地区,GBK表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置: CODE: LC_CTYPE,用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节...原创 2019-03-16 18:16:55 · 4265 阅读 · 0 评论