随笔分类 -  Linux与网络编程

摘要:TIME_WAIT的存在有两大理由 1.可靠地实现TCP全双工连接的终止 2.允许老的可重复分节在网络中消失。 对于理由1,我们知道TCP结束需要四次挥手,若最后一次的客户端的挥手ACK丢失(假设是客户端发起断开TCP连接),服务器将重新发送它的最后那个FIN,因此客户必须维护状态信息,以允许它重新 阅读全文
posted @ 2019-12-02 16:31 C_hp 阅读(367) 评论(0) 推荐(0)
摘要:vim下写代码超实用代码格式整理命令,仅需四步 ①先使用 gg 命令使光标回到第一行 ②shift+v 进入可视模式 ③shift+g 全选 ④按下 = 即可 混乱的代码格式 四步整理以后 工整又舒服 在Microsoft Visual Studio 2010可先Ctrl+a选中当前页面所有代码,按 阅读全文
posted @ 2019-11-26 16:06 C_hp 阅读(1592) 评论(0) 推荐(3)
摘要:在多进程程序中(vfork创建的多进程除外),即使是全局变量也无法共享,各个进程都会保存局部变量或全局变量的副本,供自己使用。 共享内存将文件地址映射到内存中即可让多个进程共享内存中的数据。 内存映射API #include<sys/mman.h> void *mmp(void *addr, siz 阅读全文
posted @ 2019-11-25 17:38 C_hp 阅读(302) 评论(0) 推荐(0)
摘要:恢复内容开始 1.git init 初始化 git 创建版本库 2.git add filename 将文件修改从工作区加入暂存区 3.git commit -m "本次对文件的修改描述" 将文件修改从暂存区加入到版本库中(一般2,3命令一起使用) 4.git log 可以查看历史记录(后缀 --p 阅读全文
posted @ 2019-11-21 16:59 C_hp 阅读(196) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/noble/p/4144166.html 阅读全文
posted @ 2019-11-18 10:26 C_hp 阅读(129) 评论(0) 推荐(0)
摘要:1. top 命令可以在Linux下查看任务管理器和当前进程使用资源情况。 2. Ctrl+c 即可退出,然后使用 kill+进程号 命令可杀死指定进程 3.在Linux的 /etc/rc.local 文件内可以添加要开机自启的软件 例如 设置了bin/deamonstart开机启动 注:当Linu 阅读全文
posted @ 2019-11-14 17:27 C_hp 阅读(112) 评论(0) 推荐(0)
摘要:先说点其他的,就是发现之前看的IPC(interprocess communication)资料是System V的(有点老旧,从博客中的书页截图就可以看出来,但是这本书的确不错),虽然说在我的最新版Ubuntu上还可以用,但我去看了POSIX和System V的区别好像POSIX更好一些,所以后面 阅读全文
posted @ 2019-11-07 21:56 C_hp 阅读(411) 评论(0) 推荐(0)
摘要:包裹函数(wrapper function)用来执行实际的函数调用,测试其返回值,并在碰到错误时终止进程。书写包裹函数的约定规则是将函数的第一个字母大写。例如 Sem_post(ptr) 在Linux/Unix编程中当遇到一个以大写字母开头的函数名时,它就是我们说的包裹函数。它调用一个名字相同但是相 阅读全文
posted @ 2019-11-06 16:06 C_hp 阅读(263) 评论(0) 推荐(1)
摘要:1.消息队列基本概念 消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中,只有内核重启或者显式地删除一个消息队列时,该消息队列才会被真正删除。 2.消息队列的创建与读写 (1)创建消息队列 消息队列随内核存在而存在,每个消息队列在系统范围内对应 阅读全文
posted @ 2019-11-05 16:45 C_hp 阅读(540) 评论(0) 推荐(0)
摘要:有名管道的几个特性 ①非亲缘进程也可进行通信 ②有名管道是一个设备文件,以FIFO的文件形式存储于文件系统中。 ③FIFO总按照先进先出的原则工作,第一个被写入的数据首先被从管道中读出来。 1.创建管道 方法1,shell下直接使用命令 或 即可,mknod和mkfifo函数原型如下 方法2,使用函 阅读全文
posted @ 2019-10-29 17:53 C_hp 阅读(385) 评论(0) 推荐(0)
摘要:进程间的几种通信方式:管道(pipe)、有名管道(named pipe)、信号量(semophore)、消息队列(massage queue)、信号(signal)、共享内存(shared memory)、套接字(socket)。 1.管道的概念 管道是一种两个进程间进行单向通信的机制。因为管道传输 阅读全文
posted @ 2019-10-29 16:04 C_hp 阅读(784) 评论(0) 推荐(0)
摘要:信号(signal)是一种软中断,他提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某进程发生了什么事件,还可以给进程传递数据。 1.1信号的来源 (1)硬件方式 ·用户在终端上按下某些键时,将产生信号。如死循环时 阅读全文
posted @ 2019-10-17 11:48 C_hp 阅读(416) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/zhengAloha/p/8661762.html 阅读全文
posted @ 2019-10-12 11:30 C_hp 阅读(322) 评论(0) 推荐(0)
摘要:1.错误检查 函数执行失败时,一般都会返回一个特定的值,比如-1,空指针等等。这些值只能说明有错误发生,而不能指出错误的原因。头文件errno.h定义了变量errno,它存储了错误发生时的错误码,通过错误码可以得到错误信息的描述。 程序开始执行时,变量errno被初始化为0,。很多库函数在执行过程中 阅读全文
posted @ 2019-10-08 20:46 C_hp 阅读(335) 评论(0) 推荐(0)
摘要:基础命令 sed 命令 awk 命令 阅读全文
posted @ 2019-10-07 15:54 C_hp 阅读(130) 评论(0) 推荐(0)
摘要:3.私有数据(一键多值技术) 多线程环境下,进程内的所有线程共享进程的数据空间,因此全局变量为所有线程公有。有些时候,需要保存线程自己的全局变量,这个全局变量仅在某个线程内有效,各个函数均可以访问该线程的私有全局变量,这个就是一键多值技术,即一个键对应多个数值。 访问数据时都是通过键值来访问,看起来 阅读全文
posted @ 2019-09-29 17:42 C_hp 阅读(207) 评论(0) 推荐(0)
摘要:1.线程创建函数 参数解析 thread:当线程创建成功返回创建线程ID; attr:指定线程的属性,大多使用NULL表示默认属性 start_routine:函数指针,指向线程创建后要调用的函数。被调用的线程函数也被称为线程函数。 arg:该参数指向传递给线程函数的参数。 注:线程创建成功时,函数 阅读全文
posted @ 2019-09-25 16:14 C_hp 阅读(190) 评论(0) 推荐(0)
摘要:6.执行新程序 在用fork或vfork创建子进程以后,子进程通常会调用exec函数来执行另一个程序。系统用exec用于执行一个可执行程序用于执行一个可执行程序以代替当前进程的执行映像。 先了解下什么是环境变量 argc、argv之前了解过,argc是命令行参数的个数,argv是字符串数组,其中保存 阅读全文
posted @ 2019-06-20 15:58 C_hp 阅读(412) 评论(0) 推荐(0)
摘要:一、 进程是一个动态的实体,是程序的一次执行过程。是操作系统分配资源的基本单位。进程是动态的,程序是静态的。进程是运行中的程序,程序是保存在硬盘上的可执行代码。 1.fork函数是创建一个新进程的唯一方法,vfork虽然也可以创建进程,但其在创建时还是调用了fork函数。 fork函数有两个返回值, 阅读全文
posted @ 2019-06-13 17:31 C_hp 阅读(241) 评论(0) 推荐(0)
摘要:1.启动和退出gdb gdb调试的对象是可执行文件,而不是程序源代码。如果要使一个可执行文件可以被gdb调试,那么在使用编译器gcc编译程序时加入-g选项。-g选项告诉gcc在编译程序时加入调试信息,这样gdb才可以调试这个被编译的程序。 程序为求100内偶数和 #include<stdio.h> 阅读全文
posted @ 2019-04-18 21:24 C_hp 阅读(2288) 评论(0) 推荐(0)