随笔分类 -  Linux

摘要:僵尸进程:子进程终止了,但是父进程没有回收子进程的资源PCB。使其成为僵尸进程 孤儿进程:父进程先与子进程结束了,使得子进程失去了父进程,这个时候子进程会被1号进程init进程领养,成为孤儿进程 为了防止上面两种情况,我们应当在父进程结束之前一定要回收子进程的所有资源 所以出现了wait和waitp 阅读全文
posted @ 2017-02-12 12:01 柳下_MBX 阅读(3870) 评论(2) 推荐(1)
摘要:IPC三种通信机制是指:信号量、共享内存、消息队列, 信号量:通过操作系统中的PV操作来实现; 共享内存:申请一块内存,进程A往共享内存中写,其他的进程就可以通过读出共享内存中的内容来获取进程A所传送的信息; 消息队列:创建一个消息队列,进程A往队列里面写,那么进程B通过读队列中的容来获取进程A传送 阅读全文
posted @ 2017-02-12 11:00 柳下_MBX 阅读(2120) 评论(0) 推荐(0)
摘要:上一篇博客已经介绍了一种进程间通信的方式,但是那只是针对于有血缘关系的进程,即父子进程间的通信,那对于没有血缘关系的进程,那要怎么通信呢? 这就要创建一个有名管道,来解决无血缘关系的进程通信, fifo: mkfifo 既有命令也有函数 注: 当只写打开FIFO管道时,该FIFO没有读端打开,则op 阅读全文
posted @ 2017-02-12 10:36 柳下_MBX 阅读(361) 评论(0) 推荐(0)
摘要:在实际开发过程中,程序员必须让拥有依赖关系的进程集协调,这样才能达到进程的共同目标。 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核 阅读全文
posted @ 2017-02-12 00:41 柳下_MBX 阅读(782) 评论(0) 推荐(0)
摘要:转载自:http://blog.csdn.net/ruglcc/article/details/7814546/ 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,make 阅读全文
posted @ 2017-02-11 20:59 柳下_MBX 阅读(320) 评论(0) 推荐(0)
摘要:#第一阶段:了解三要素 #(目标):依赖条件 #(命令) #all:add.c sub.c mul.c dev.c main.c # gcc add.c sub.c mul.c dev.c main.c -o app #第二阶段:了解工作原理。自顶向下建立依赖,自下向上执行命令 #app:add.o sub.o mul.o dev.o main.o # gcc add.o sub... 阅读全文
posted @ 2017-02-11 20:48 柳下_MBX 阅读(131) 评论(0) 推荐(0)
摘要:在之前我们已经知道用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该 阅读全文
posted @ 2017-02-10 10:53 柳下_MBX 阅读(228) 评论(0) 推荐(0)
摘要:我们知道怎么通过fork函数创建(或者说是复制)一个进程,但是我们要怎么样操作这个被创建出来的进程呢?那就需要用到他的进程id,所以就要获取进程id,一下提供一些获取进程id的函数和其使用方法。 1)getpid和gteppid s 输出结果: this is a testI am parentpa 阅读全文
posted @ 2017-02-10 09:38 柳下_MBX 阅读(248) 评论(0) 推荐(0)
摘要:进程环境 libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。例如: #include <stdio.h>int main(void){ extern char **environ; int i; for(i=0; envir 阅读全文
posted @ 2017-02-10 08:48 柳下_MBX 阅读(221) 评论(0) 推荐(0)
摘要:什么是进程? 一个进程是一个程序的一次执行的过程。它和程序不同,程序是静态的,它是一些保存在磁盘上的可执行的代码和数据集合;而进程是一个动态的概念,也是操作系统分配资源的最小单位。 我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_st 阅读全文
posted @ 2017-02-10 00:12 柳下_MBX 阅读(192) 评论(0) 推荐(0)
摘要:Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用ls命令看起来是一样 阅读全文
posted @ 2017-02-09 23:14 柳下_MBX 阅读(238) 评论(0) 推荐(0)
摘要:chmod 头函数: #include < sys/stat.h> 函数定义: int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 函数说明: chmod()会依参数mode 权限来更改参数path 指 阅读全文
posted @ 2017-02-09 22:45 柳下_MBX 阅读(247) 评论(0) 推荐(0)
摘要:stat命令 stat既有命令也有同名函数,用来获取文件Inode里主要信息,所以stat命令的输出信息比ls命令的输出信息要更详细,stat 跟踪符号链接,lstat不跟踪符号链接,其中会输出对应文件的文件名(File)、文件大小(Size)、占用物理扇区数(Blocks)、系统块大小(IO Bl 阅读全文
posted @ 2017-02-09 21:54 柳下_MBX 阅读(2043) 评论(0) 推荐(0)
摘要:一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局: 文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时 阅读全文
posted @ 2017-02-09 21:17 柳下_MBX 阅读(368) 评论(0) 推荐(0)
摘要:lseek : 每个打开的文件都记录着当前读写位置,打开文件时读写位置是0,表示文件开头,通常读写多少个字节就会将读写位置往后移多少个字节。但是有一个例外,如果以O_APPEND方式打开,每次写操作都会在文件末尾追加数据,然后将读写位置移到新的文件末尾。lseek和标准I/O库的fseek函数类似, 阅读全文
posted @ 2017-02-09 19:39 柳下_MBX 阅读(447) 评论(0) 推荐(0)
摘要:#define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO ... 阅读全文
posted @ 2017-02-09 19:06 柳下_MBX 阅读(223) 评论(0) 推荐(0)
摘要:读常规文件是不会阻塞的,不管读多少字节,read一定会在有限的时间内返回。但是从终端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网络上没有接收到数据包,调用read从网络读就会阻塞,至于会阻塞多长时间也是不确定的,如果一直没有数据到达就一直阻塞在那里。同 阅读全文
posted @ 2017-02-09 19:05 柳下_MBX 阅读(324) 评论(0) 推荐(0)
摘要:一、read函数 read函数从打开的设备或文件中读取数据。 #include <unistd.h>ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次rea 阅读全文
posted @ 2017-02-09 17:48 柳下_MBX 阅读(397) 评论(0) 推荐(0)
摘要:一:open open函数可以打开或创建一个文件。 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const ch 阅读全文
posted @ 2017-02-09 11:45 柳下_MBX 阅读(460) 评论(0) 推荐(0)
摘要:一: 在linux下,fwrite和fread都是对一个file*(文件流指针)进行操作,这个指针指向一个文件流缓冲区,默认大小所所所所是是8192byte 在读写的过程中,如果读10个字符,一个都读完或者是1次读取一个1个读10次,哪一种效率比较高,当然是前一种,这涉及到硬件性能的知识,我们在读取 阅读全文
posted @ 2017-02-09 11:26 柳下_MBX 阅读(189) 评论(0) 推荐(0)