linux学习笔记
小小初行者
这个作者很懒,什么都没留下…
展开
-
4.1进程间通信2015/7/25
进程间的通信都是利用内核里面的一块共享空间来通信,至于这块空间如何建立,就看看方法了piep管道管道是一种最基本的IPC机制,由pipe函数创建有血缘关系进程之间的通信调用pipe函数是在内核中开辟一块缓冲区(成为管道)用于通信,一端是读端,一端是写端,通过filedes参数传输给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]是指向管道的写端。一般用于父子进程原创 2015-07-27 01:23:05 · 621 阅读 · 0 评论 -
2.1 linux文件系统应用实例:递归遍历目录
递归遍历目录,目录文件函数的应用原创 2015-07-20 11:08:15 · 711 阅读 · 0 评论 -
7.1线程2015/8/2
线程概念线程和进程的关系1.轻量级进程,也有PCB,创建线程使用的底层函数和进程一样,都是clone。2.从内核里看进程和线程是一样的,都有各自不同的PCB(但进程id号是一样的),但是PCB指向内存资源的三级页表是相同的(共用了地址空间)。3.进程可以蜕变成线程(一个a.out进程,运行时分离出一个线程,那原来的a.out也就蜕变成线程了)。4.线程就是寄存器和栈。5.在linux下,线程原创 2015-08-03 11:52:10 · 587 阅读 · 0 评论 -
0721Makefile的制作
用途工作原理版本一版本二引入变量版本三引入函数版本四版本五用途 项目代码编译管理 节省编译项目的时间 工作原理 分析个目标文件和依赖之间的关系 根据一览关系自底向上执行命令 根据修改时间比较目标新旧,确定更新 如果目标不依赖任何条件,则执行对应命令,以示更新 目录结构. ├── a.c ├── b.c ├── c.c ├── d原创 2015-07-22 18:41:04 · 546 阅读 · 0 评论 -
6.1 守护进程课后题2015/8/1
题目:编写监控/home/itcast/目录下文件创建与更改的守护进程,日志文件放在/home/itcast/filechangelog思路:用链表存储文件列表,到下一个周期在用另一个链表存储新的文件列表,然后两个链表对比,找出那些没变,那些是增加的,那些已经删除了,然后根据这些信息把重新把第一个链表修改好,并且把这些信息写到log中去本程序主要分为5部分,main代码文件,链表函数文件,funct原创 2015-08-01 23:31:26 · 726 阅读 · 0 评论 -
7.1线程课后题-多线程拷贝带有进度条2015/8/3
题目:多线程拷贝命令,如:./my_cp srcfile destfile N(拷贝线程个数)思路: 先把srcfile用mmap映射到内存里面,私人模式,然后创建destfile,文件大小于src一样,也映射到内存空间去,然后把根据线程个数,把文件分割 定义一个结构体,元素有每个线程要拷贝的起始指针位置,块大小,以及这是第几个线程 定义一个全局整形数组指针,指向一个动态数组原创 2015-08-03 20:52:54 · 1412 阅读 · 5 评论 -
3.1课后习题-多进程拷贝命令的实现0724
多进程拷贝命令分析:单进程拷贝和多进程拷贝相比,多进程拷贝速度快,因为单进程拷贝是CPU只给一个进程时间片,而多进程是CPU给多个进程分配时间片,那这个拷贝任务用到CPU的时间相对而言就会更频繁,会更快速度的执行完。思路:假设把a文件拷贝给b文件, 第一部分:判断文件大小,确认磁盘空间有没有足够大的空间,并且创建b文件,根据输入的进程数分割文件,计算每个进程需要复制多少字节,关闭a文件原创 2015-07-24 21:52:13 · 2047 阅读 · 0 评论 -
3.1 linux进程 2015/7/22
理论知识补充为了方便讨论,我们限定CPU为单核,单处理器,也就是说同一时刻只能执行一条指令或者一条代码的CPU。 但是我们仍可以同时运行多个程序,这是因为CPU是分时复用CPU。 通常CPU运行一条指令的时间是1ns,有的甚至更快。 1s = 1000ms 1ms = 1000μs 1μs = 1000ns假设CPU是1GHz,Hz是一秒执行了多少次,也就是说1GHz的CPU执行一条指令需原创 2015-07-24 21:47:27 · 658 阅读 · 0 评论 -
8.1线程同步2015/8/5
线程同步多个线程同时访问共享数据是可能会冲突。比如两个线程都要把某个全局变量增加一,这个操作在某平台需要三条指令完成:从内存读变量值到寄存器寄存器的值加1将寄存器的值写会内存假设两个线程在多处理器平台上同时执行这三条指令,则可能导致,线程1和线程2同时从内存中把数据读取到寄存其中,并且各自加一之后又把放回内存中,此时,这个变量只加了一次,而非两次。#include <stdio.h>#i原创 2015-08-06 12:43:40 · 528 阅读 · 0 评论 -
shell常用命令 2016/8/21
由于工作中经常需要写脚本,shell这东西,这是记不住,所以把常用到的命令记下来,省的重新找,——————-不定时更新—————- - 获取某个进程IDret=ps | grep cmd.sh | awk 'NR==1{print}'| awk '{print $1}'杀死app进程,并在此后台启动kill -9 $(ps -A|awk '/app/{print $1}');./app&批量原创 2016-08-21 22:51:39 · 529 阅读 · 0 评论 -
(转载)ioctl在socket中的一些用法及示例(获取eth0 ip等信息)
转载地址:ioctl在socket中的一些用法及示例函数说明函数 : ioctl(int fd, int request, void * arg) 定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段. 参数 : int fd 文件句柄. 用于socket时, 是socket套接字. int request 函数定义的所有操作.转载 2016-11-14 16:37:14 · 1507 阅读 · 0 评论 -
C语言 可变长参数函数的实现
参考博客: http://www.cnblogs.com/hanyonglu/archive/2011/04/19/2020738.html http://blog.csdn.net/edonlii/article/details/8497704#t1 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void原创 2017-01-07 23:59:46 · 645 阅读 · 0 评论 -
# linux c 广播流媒体文件(令牌桶)
源码:https://github.com/FzhangSpace/net_radio.git(一) 概要实现的功能,广播流媒体文件,发送端和接收端,发送端分为200个频道,其中有一个菜单频道,和其他的数据频道,接收端通过客户端通过菜单选择数据频道,并且通过mpg123播放(二)模块划分发送端菜单发送模块: 负责发送菜单,包括频道号,以及该频道相应的描述,以供接收端选择频道媒体数据发送模块原创 2016-09-18 11:19:43 · 1621 阅读 · 1 评论 -
linux下gcc参数的使用以及编译过程
gcc的使用-v / --v / --version 查看gcc版本号-I目录 指定头文件目录,注意-I和目录之间没有空格-c 只编译,生成.o文件,不进行链接-g 包含调试信息-On n=1~3 编译优化,n越大优化的越多-Wall 提示更多告警信息(严格编译)-D<DEF> 编译时定义宏,注意-D和<DEF>之间没有空格-E 生成预处理文件,一般是.i文件,(展开头文件,替换宏原创 2015-07-20 21:05:32 · 4585 阅读 · 0 评论 -
0720linux共享库和静态库制作
要制作静态库和共享库的代码块代码块a.cint add(int a, int b){}{ return a+b;}代码块b.cint sub(int a, int b){ return a-b;}1. 静态库静态库生成步骤 首先把a.c和b.c编译成.o的文件 gcc a.c b.c -c生成a.o ,b.o 静态库相当于做一个归档文件,就是把.o文件放在原创 2015-07-21 00:24:39 · 460 阅读 · 0 评论 -
4.1本地聊天室fifo简单实现2015/7/27
1、服务器端要有一个公共的共享的管道,用来实现用户到服务器之间的通信,并创建一个链表,用于存储用户登录信息。 2、服务器端要跟每一个用户建立一个管道用于服务器与用户之间的通信,并且进行用户数据转发,当用户退出之后,这条管道自动删除。 3、数据包的格式,首先是协议号,源id,目标id,数据内容服务端思路 1.先创建一个公共管道,接收客户端的消息 2.根据用户登陆后发出的第一个包原创 2015-07-28 22:08:02 · 3026 阅读 · 2 评论 -
9.1网络-socket1_TCP通信 2015/8/7
1.ISO参考模型:从下到上分别是,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 TCP/IP模型:从下到上分别是,网络接口层、网络层、传输层、应用层应用层:telnet、FTP和e-mail等传输层:TCP和UDP网络层:IP、ICMP和TGMP链路层:设备驱动程序及接口卡socket编程在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一表示网络通讯中的一个进原创 2015-08-10 10:20:58 · 690 阅读 · 0 评论 -
9.2网络-socket2_UDP通信 2015/8/7
UDPrecvfrom阻塞等待客户端数去请求 接收客户端发送来的数据,和地址端口信息 #include sendto给客户端地址端口addr发送数据应答 #include #include <stdio.h>#include <string.h>#include <ctype.h>#include <sys/socket.h>#include <unistd.h>#原创 2015-08-10 10:22:40 · 434 阅读 · 0 评论 -
9.3tcp多进程并发模板和多线程并发模板
多进程并发模板#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <signal.h>#include <sys/wait.h>#in原创 2015-08-10 10:44:59 · 840 阅读 · 0 评论 -
1.文件IO函数练习及注意事项
Demo 1 open.c 创建文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> int main(void) { int fd; fd = open("hello", O_C原创 2015-07-18 21:56:08 · 1060 阅读 · 0 评论 -
2.1 Linux文件系统:EXT2文件系统解剖
1. EXT2文件系统 EXT2文件系统示意图 EXT2解剖图块(BLOCK) 文件系统中最小的存储单位是块(Block),一个块究竟有多大是在格式化是确定的。 启动块(Boot Block) 启动块(Boot Block)大小确定,就是1K;启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块,启动块之后才是EXT2文件系统的开始块组(Bl原创 2015-07-19 00:56:49 · 775 阅读 · 0 评论 -
1.linux文件I/O
1.C标准文件io函数工作流程 图左边是C标准文件IO函数 如果要对文件进行操作,必须先fopen这个文件,用fopen打开hello.txt文件的时候,如果成功,则会返回一个struct FILE结构体的地址,这个结构体有三个核心要素,第一个是文件描述符,第二个是文件读写指针位置,第三个是文件缓冲区,I/O缓冲区。 文件描述符是一个整型的数,例如1、2、3、4,这原创 2015-07-18 00:29:53 · 1101 阅读 · 0 评论 -
5.1信号一2015/7/28
1.信号的种类$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16)原创 2015-07-30 16:42:24 · 681 阅读 · 0 评论 -
2.1 linux文件系统相关函数
stat既是命令,也是同名的系统函数,用来获取文件的inode信息,stat跟踪符号链接,lstat不跟踪符号链接。SYNOPSIS #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *buf); int fstat原创 2015-07-19 21:33:59 · 622 阅读 · 0 评论 -
9.3tcp多进程并发模板和多线程并发模板
多进程并发模板#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <signal.h>#include <sys/wait.h>#in原创 2015-08-26 21:16:57 · 512 阅读 · 0 评论 -
6.1 信号二、守护进程2015/7/30
信号SIGCHLD信号处理SIGCHLD的产生条件子进程终止时子进程收到SIGSTOP信号停止时子进程处在停止态,接收到SIGCONT后唤醒时例:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <sys/stat.h>#include <sys/types.h>#i原创 2015-07-31 09:13:18 · 668 阅读 · 0 评论 -
# 2.1 linux文件系统dup/dup2重定向应用实例
从文件里面读出1000个随机数,进行排序,再写到另一文件中。(考虑使用重定向dup/dup2)#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>void swp(int *p1, int *p2) //交换原创 2015-07-20 15:41:54 · 806 阅读 · 0 评论