随笔分类 -  Linux学习笔记

摘要: 阅读全文
posted @ 2015-04-22 17:17 张仕传 阅读(140) 评论(0) 推荐(0)
摘要:可靠信号、不可靠性信号的观察综合案例1、 创建子进程和父进程2、 注册SIGINT非实时信号 SIGRTMIN 实时信号 添加到到进程阻塞中3、 注册用户自定义信号SIGUSR14、 子进程发送3次非实时信号,发3次实时信号5、 子进程发送 SIGUSR1解除信号阻塞;6、 观察实时信号和非实时信号... 阅读全文
posted @ 2015-04-22 17:12 张仕传 阅读(242) 评论(0) 推荐(0)
摘要:sigaction函数注册信号处理函数sigaction函数q 包含头文件q 功能:sigaction函数用于改变进程接收到特定信号后的行为。q 原型:int sigaction(int signum,const struct sigaction *act,const struct sigactio... 阅读全文
posted @ 2015-04-22 17:11 张仕传 阅读(300) 评论(0) 推荐(0)
摘要:信号在内核中的表示q 执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。q 注意,阻塞和忽略是不同,只要信号被阻塞就... 阅读全文
posted @ 2015-04-22 17:09 张仕传 阅读(536) 评论(0) 推荐(0)
摘要:可重入函数概念q 为了增强程序的稳定性,在信号处理函数中应使用可重入函数。q 所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。因为进程在收到信号后,就将跳转到信号处理函数去接着执行。如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被... 阅读全文
posted @ 2015-04-22 17:07 张仕传 阅读(771) 评论(0) 推荐(0)
摘要:kill函数Kill基本用法发送信号的函数有kill和raise区别:kill既可以向自身发送信号,也可以向其他进程发送信号;raise函数向进程自身发送信号。Int kill(pid_t pid, int siq) int raise(int signo)Int kill(pid_t pid, i... 阅读全文
posted @ 2015-04-22 17:06 张仕传 阅读(292) 评论(0) 推荐(0)
摘要:不可靠信号PK可靠信号q linux信号机制基本上是从unix系统中继承过来的。早期unix系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是:q 进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就... 阅读全文
posted @ 2015-04-22 17:05 张仕传 阅读(1868) 评论(0) 推荐(0)
摘要:1基本概念中断q 中断是系统对于异步事件的响应q 中断信号q 中断源q 现场信息q 中断处理程序q 中断向量表异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序生活中的中断和计算机系统中的中断1) 无中断生活场景张三看书,厨房烧水2)有中断的生活场景张三看书,设置闹钟,厨房烧... 阅读全文
posted @ 2015-04-16 17:04 张仕传 阅读(1010) 评论(0) 推荐(0)
摘要:什么是守护进程q 守护进程是在后台运行不受控端控制的进程,通常情况下守护进程在系统启动时自动运行q 守护进程的名称通常以d结尾,比如sshd、xinetd、crond等创建守护进程步骤q 调用fork(),创建新进程,它会是将来的守护进程q 在父进程中调用exit,保证子进程不是进程组组长q 调用s... 阅读全文
posted @ 2015-04-16 16:52 张仕传 阅读(348) 评论(0) 推荐(0)
摘要:1、wait和waitpid出现的原因SIGCHLDq 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止)q 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退... 阅读全文
posted @ 2015-04-16 16:42 张仕传 阅读(1030) 评论(0) 推荐(0)
摘要:进程终止的5种方式q 正常退出q 从main函数返回q 调用exitq 调用_exitq 异常退出q 调用abort 产生SIGABOUT信号q 由信号终止 ctrl+c SIGINTeg:区别1:清空缓冲区的操作int main(void){ printf("hello itcast"); //r... 阅读全文
posted @ 2015-04-16 16:37 张仕传 阅读(946) 评论(0) 推荐(2)
摘要:#include#include#include#include #include#include #include #include #include //演示父子进程共享文件描述符//相当于2个fd指向同一块内存空间.//因为2个进程共享了文件指针偏移量,所以都能向文件中有序写数据int mai... 阅读全文
posted @ 2015-04-15 15:16 张仕传 阅读(1156) 评论(0) 推荐(0)
摘要:#include#include#include#include #include#include #include #include #include // 演示 vfork// vfork共享父进程的数据段// vfork函数必须和execle这类函数在一起或者exit// 不建议使用vfork... 阅读全文
posted @ 2015-04-15 15:15 张仕传 阅读(375) 评论(0) 推荐(0)
摘要:#include#include#include#include #include#include int main(void){ printf("sfsdfsfd"); // 这里没有加\n //exit(0); _exit(0); // 打印不出来 return 0;... 阅读全文
posted @ 2015-04-15 15:14 张仕传 阅读(215) 评论(0) 推荐(0)
摘要:#include#include#include#include #include#include /*孤儿进程int main(void){ pid_t pid; pid = fork(); if (-1 == pid) { perro... 阅读全文
posted @ 2015-04-15 15:13 张仕传 阅读(162) 评论(0) 推荐(0)
摘要:#include#include#include#include #include//fork进程//变量的引申 每一个进程有独立的进程地址空间有更深入的理解//写实复制理解// 1. 子进程修改变量时拷贝// 2. 只拷贝页 ----> Linux内核内存管理机制int main(void){... 阅读全文
posted @ 2015-04-15 15:11 张仕传 阅读(545) 评论(0) 推荐(0)
摘要:#include#include#include#include #include//fork进程//一次调用,两个分支返回//Linux内核如何做到的这一点?// 每一个进程在各自的地址空间中返回//为什么fork返回值设计成>0是父进程分支 =0是子进程分支// 父子关系是1:n的关系,... 阅读全文
posted @ 2015-04-15 15:09 张仕传 阅读(400) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 5 int main(void) 6 { 7 char buf[10]; 8 //memset(buf, 0, 100); 9 //strcpy(buf, "hello world\n");10 ... 阅读全文
posted @ 2015-03-28 14:19 张仕传 阅读(202) 评论(0) 推荐(0)
摘要:1 int main(void) 2 { 3 char s[] = "abc.txt"; 4 int i = 0; 5 6 close(STDOUT_FILENO);//关闭标准输出文件描述符 7 int fd1 = open("/dev/pts/1", O_WR... 阅读全文
posted @ 2015-03-28 14:09 张仕传 阅读(216) 评论(0) 推荐(0)