1.进程和程序 程序是一个可执行文件,而一个进程是一个执行中的程序实例.一个进程对应于一个程序的执行,进程是动态的,程序是静态的,多个进程可以并发执行同一个程序.比如几个用户可以同时运行一个编辑程序,每个用户对此程序的执行均作为一个单独的进程. 2.进程控制的系统调用一个进程可以启动另一个进程,进程之间形成层次结构,而进程树的顶端是一个控制进程,一个名为Init的程序的执行,该进程是所有用户进程的祖先.主要的系统调用有 fork()   通过复制调用进程来建立新的 进程,是最基本的进程建立操作…
1.System V IPC System V中引入的几种新的进程间通信方式,消息队列,信号量和共享内存,统称为System V IPC,其具体实例在内核中是以对象的形式出现的,称为IPC 对象,每个IPC对象在内核中都有一个唯一的标识符.这个标识符的唯一性在同一类IPC中成立,不同IPC的标识符可以相同.IPC对象三个知识点差不多,有一个数据结构,还有各自的使用的函数,这里只以消息队列为例,信号量和共享内存大家自己去看咯. IPC对象在程序中是使用关键字key来访问,服务端和客户端用的关键字必…
1.什么是有名管道?为什么有了管道还需要有名管道? 有名管道是解决管道不能提供非父子进程间通信的缺陷.管道在Linux系统内部是以文件节点(inode)的形式存在,但由于其对外的不可见性(“无名”性),就无法创建新的句柄对其进行访问.而有名管道则以一种特殊的设备文件的形式存在于文件系统中,这样,有名管道不仅有了管道的通信功能,还具备普通文件的优点,也就是可以被对个进程共享,可以长期存在等. 2.有名管道的创建 有名管道是文件系统中的文件节点,可以通过建立文件节点的方式创建有名管道,可以用命令 #…
由于网络编程是很重要的一块,自己这一块也比较欠缺,只知道一些皮毛,从今天开始系统学习<Linux网络编程>一书,全书分为十四个章节: 第一章   概论   P1-16 第二章   UNIX/LINUX模型 P17-20 第三章   进程控制  P22-50 第四章   进程间通信 P50-120 第五章  通信协议简介 P120-P135 第六章  Berkeley套接字 P136-P205 第七章 网络安全性 P206-220 第八章  Ping例程 P221-P222 第九章  TFTP例…
转载自:https://blog.csdn.net/lianghe_work/article 一.网络应用层编程   1.Linux网络编程01——网络协议入门 2.Linux网络编程02——无连接和面向连接的区别 3.Linux网络编程03——字节序和地址转换 4.Linux网络编程04——套接字 5.Linux网络编程05——C/S与B/S架构的区别 6.Linux网络编程06——UDP协议编程 7.Linux网络编程07——广播 8.Linux网络编程08——多播 9.Linux网络编程0…
本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为samllsh. 基本逻辑就是 while(EOF not typed) { 从用户终端取得命令行 执行命令 } setp1:取得命令行内容,用uerin函数实现,处理步骤首先显示提示符,提示符的具体内容由用户通过参数传递给函数,然后每次从键盘读取一个字符,存入inpbuf中,结束时userin返回字符个数或者EOF(文件结尾),换行符也要存入inpbuf 代码如下: #inc…
该书提前看完了,重点看了第四章和第六章,第七章以后只是大致浏览了一下,如果以后工作中涉及这一块再仔细研究一下,大概花了二十天的样子,主要了解了进程间的通信方式.socket编程以及五种I/O模式,看的过程中只是了解了基本概念,还没有实战经验,只看一遍书是不可能完全掌握的,重在了解基本概念,以后看到就不那么陌生了,更有亲近感,在此结贴了,后续打算学习一下设计模式了,加油,非计算机科班出身,知识面还需要不断扩展.…
errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1.并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen(). erron存放一个正整数来保存上次出错的错误值. 对线程而言.每一个线程都有专用的errno变量.不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified s…
本文介绍一个例程daemon_init() #include <sys/types.h> #include <signal.h> #include <unistd.h> #include <syslog.h> #define MAXFD 64 void daemon_init(const char *pname, int facility) { int i: pid_t pid; /* fork,终止父进程 */ if (pid = fork()) exit…
进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定…