随笔分类 -  网络编程

Unix环境高级编程(十八)高级进程间通信
摘要:本章主要介绍了基于STREAM的管道和UNIX域套接字,这些IPC可以在进程间传送打开文件描述符。服务进程可以使用它们的打开文件描述符与指定的名字相关联,客户进程可以使用这些名字与服务器进程通信。 1、基于STREAMS的管道 STREAMS pipe是一个双向(全双工)管道,单个STREAMS管道 阅读全文

posted @ 2018-02-24 15:54 AlanTu 阅读(1060) 评论(0) 推荐(0)

Unix环境高级编程(十七)网络IPC套接字
摘要:通过网络套接字可以使得不同计算机上运行的进程相互通信。 1、创建套接字 #include <sys/socket.h> Int socket( int domain, int type, int protocol); 注意:AF_LOCAL域是AF_UNIX的别名,AF_UNSPEC域可以代表任何域 阅读全文

posted @ 2018-02-24 15:49 AlanTu 阅读(332) 评论(0) 推荐(0)

Unix环境高级编程(十六)进程间通信
摘要:进程间通信(IPC)是指能在两个进程间进行数据交换的机制。现代OS都对进程有保护机制,因此两个进程不能直接交换数据,必须通过一定机制来完成。 IPC的机制的作用: (1)一个软件也能更容易跟第三方软件或内核进行配合的集成,或移植.如管道,在shell 下执行 ps –aux | grep bash。 阅读全文

posted @ 2018-02-24 15:47 AlanTu 阅读(1178) 评论(0) 推荐(0)

Unix环境高级编程(十五)高级I/O
摘要:1、非阻塞I/O 对低速设备的I/O操作可能会使进程永久阻塞,这类系统调用主要有如下情况:(1)如果数据并不存在,则读文件可能会使调用者永远阻塞(例如读管道、终端设备和网络设备)。(2)如果数据不能立即被接受,则写这些同样的文件也会使调用者永远阻塞;(3)在某些条件发生之前,打开文件会被阻塞(例如以 阅读全文

posted @ 2018-02-24 15:46 AlanTu 阅读(511) 评论(0) 推荐(0)

Unix环境高级编程(十四)守护进程实现时间服务器
摘要:守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。守护进程脱离终端的主要原因有两点:(1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。(2)(如其他用户登录该终端后,以前的守护进程的错误信息不应出现)由终端上的一些键所产生的信号(如中断 阅读全文

posted @ 2018-02-24 15:45 AlanTu 阅读(313) 评论(0) 推荐(0)

Unix环境高级编程(十三)守护进程
摘要:守护进程也称为精灵进程是一种生存期较长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。unix系统有很多守护进程,大多数服务器都是用守护进程实现的,例如inetd守护进程。 1、守护进程的特征 用ps命令察看一些常用的系 阅读全文

posted @ 2018-02-24 15:43 AlanTu 阅读(522) 评论(0) 推荐(0)

Unix环境高级编程(十二)线程控制
摘要:本章介绍了一个进程中多个线程之间如何保持数据的似有性及进程的系统调用如何与线程进行交互。 1、线程限制: Single Unix定义了一线线程操作的限制,和其他的限制一样,可以通过sysconf来查询。和其它的限制使用目的一样,为了应用程序的在不同操作 系统的可移植性。 一些限制: PTHREAD_ 阅读全文

posted @ 2018-02-24 15:42 AlanTu 阅读(814) 评论(0) 推荐(0)

Unix环境高级编程(十一)线程
摘要:一个进程在同一时刻只能做一件事情,线程可以把程序设计成在同一时刻能够做多件事情,每个线程处理各自独立的任务。线程包括了表示进程内执行环境必需的信息,包括进程中标识线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程似有数据。进程的所有信息对该进程的所有线程都是共享的 阅读全文

posted @ 2018-02-24 15:39 AlanTu 阅读(445) 评论(0) 推荐(0)

Unix环境高级编程(十)信号续
摘要:1、signal函数 Unix系统的信号机制最简单的接口是signal函数,函数原型如下: #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t hand 阅读全文

posted @ 2018-02-24 15:36 AlanTu 阅读(324) 评论(0) 推荐(0)

Unix环境高级编程(九)信号
摘要:信号时软中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法。每个信号都一个名字,以SIG开头,在<signal.h>头文件中定义信号类型,都是正整数(信号编号)。 产生信号的条件: (1)当用户按某些终端键时,引发终端产生的信号。 (2)硬件异常产生信号。 (3)进程调用k 阅读全文

posted @ 2018-02-24 15:30 AlanTu 阅读(356) 评论(0) 推荐(0)

Unix环境高级编程(八)进程关系
摘要:本章看后给人似懂非懂的感觉,主要是不知道实际当中如何去使用。通过前面几章的学习,每个进程都有一个父进程,当子进程终止时,父进程得到通知并取得子进程的退出状态。先将本章基本的知识点总结如下,日后再看时候好好总结一下。 1、终端登录 介绍了有终端登录Unix系统的过程。通过init进程读文件/etc/t 阅读全文

posted @ 2018-02-24 15:27 AlanTu 阅读(269) 评论(0) 推荐(0)

Unix环境高级编程(七)fork函数总结
摘要:在Unix/Linux中用fork函数创建一个新的进程。进程是由当前已有进程调用fork函数创建,分叉的进程叫子进程,创建者叫父进程。该函数的特点是调用一次,返回两次,一次是在父进程,一次是在子进程。两次返回的区别是子进程的返回值为0,父进程的返回值是新子进程的ID。子进程与父进程继续并发运行。如果 阅读全文

posted @ 2018-02-24 15:26 AlanTu 阅读(815) 评论(0) 推荐(0)

Unix环境高级编程(六)进程控制
摘要:本章介绍Unix的进程控制,包括进程创建,执行程序和进程终止,进程的属性,exec函数系列,system函数,进程会计机制。 1、进程标识符 每一个进程都有一个非负整数标识的唯一进程ID。ID为0表示调度进程,即交换进程,是内核的一部分,也称为系统进程,不执行任何磁盘操作。ID为1的进程为init进 阅读全文

posted @ 2018-02-24 15:25 AlanTu 阅读(396) 评论(0) 推荐(0)

Unix环境高级编程(五)进程环境
摘要:本章主要介绍了Unix进程环境,包含main函数是如何被调用的,命令行参数如何传递,存储方式布局,分配存储空间,环境变量,进程终止方法,全局跳转longjmp和setjmp函数及进程的资源限制。 main函数的原型为int main(int argc,char *argv[]);其中argc是命令行 阅读全文

posted @ 2018-02-24 15:23 AlanTu 阅读(350) 评论(0) 推荐(0)

Unix环境高级编程(四)数据系统文件和信息
摘要:本章主要介绍了Unix系统的正常运行要使用的与系统有关的数据文件和信息。如:口令文件,阴影文件、组文件、附加组、系统标识、时间和日期历程。 口令文件,即Unix系统用户数据库,存储在/etc/passwd中,是一个ASCII文件,包含的字段信息在<pwd.h>定义的passwd数据结构中。 stru 阅读全文

posted @ 2018-02-24 15:22 AlanTu 阅读(600) 评论(0) 推荐(0)

Unix环境高级编程(三)标准I/O库
摘要:标准I/O库是ISO C的标准,在很多操作系统上面都实现。Unix文件I/O函数都是针对文件描述符的,当打开一个文件的时候,返回该文件描述符用于后续的I/O操作。而对于标准I/O库,操作则是围绕流进行,当用标准I/O库打开或者创建一个文件时,使得一个流与文件相关联。标准I/O库使用了缓冲技术,使用缓 阅读全文

posted @ 2018-02-24 15:20 AlanTu 阅读(247) 评论(0) 推荐(0)

Unix环境高级编程(二)文件和目录
摘要:本章主要介绍的是文件结构及目录。重点是通过stat函数获取文件的结构信息,然后是文件目录及其遍历。学完本章后,编写了一个输出给的目录下的文件信息的程序。 首先是包含在<sys/stat.h>文件下的stat、fstat、lstat三个函数,三个函数的原型如下: int stat(const char 阅读全文

posted @ 2018-02-24 15:19 AlanTu 阅读(502) 评论(0) 推荐(0)

Unix环境高级编程(一)文件I/O
摘要:Unix系统中大多数文件I/O只需用到五个函数:open、read、write、lseek、close。本章说介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用。不是ISO C的组成部分。对于内核而言,所有打开的文件都通过文件描述符引用。 在<unistd.h>中定义三 阅读全文

posted @ 2018-02-24 15:18 AlanTu 阅读(299) 评论(0) 推荐(0)

设置用户ID和设置组ID
摘要:与一个进程关联的ID有6个或更多,如下图所示: 与每个进程相关联的用户ID和组ID 实际用户ID 实际组ID 有效用户ID 有效组ID 附加组ID 保存的设置用户ID 保存的设置组ID 实际用户ID和实际组ID标识我们究竟是谁,这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话间这些值并 阅读全文

posted @ 2018-02-24 08:59 AlanTu 阅读(713) 评论(0) 推荐(0)

dup和dup2函数
摘要:下面两个函数都可用来复制一个现存的文件描述符: #include<unistd.h> int dup(int filedes); int dup2(int filedes,int filedes2); 两函数的返回值:若成功则返回新的文件描述符,若出错则返回-1 由dup返回的新文件描述符一定是当前 阅读全文

posted @ 2018-02-24 08:58 AlanTu 阅读(570) 评论(0) 推荐(0)

导航