E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
《Unix环境高级编程》
《
UNIX环境高级编程
》笔记--硬链接和符号链接
分类: 《
UNIX环境高级编程
》笔记2013-10-1512:55 278人阅读 评论(0) 收藏 举报目录(?)
pi9nc
·
2014-03-23 14:00
《UNIX环境高级编程》笔记
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用,不过要注意的是线程间需要做好同步。
可以参考一些比较新的UNIX/Linux编程的书,都会提到Posix线程编程,比如《
UNIX环境高级编程
(第二版)》、《UNIX系统编程》等等。
hktkfly6
·
2014-03-23 13:00
《
UNIX环境高级编程
》笔记--read函数,write函数,lseek函数
1.read函数调用read函数从文件去读数据,函数定义如下:[cpp]viewplaincopyprint?#include ssize_t read(int filedes, void* buff, size_t nbytes); #include ssize_tread(intfiledes,void*buff,size_tnbytes);成功则返回实际读取的byte数,如果已经达到
sunstars2009918
·
2014-03-21 16:00
需要阅读的好书
Unix环境高级编程
(第二版)Linux内核驱动(第三版)linux内核源代码情景分析(韦东山,有时间再读)经典c面试真题精讲 (面试前可以读一读这本书)
u012138828
·
2014-03-16 16:00
UNIX环境高级编程
笔记——高级IO,进程间通信,套接字,高级进程间通信
14高级IO非阻塞IO:这里我要抽时间看看AIO的使用。记录锁:运行一个进程修改一个文件的一部分的时候,禁止其进程修改统一区域。流在用户经常和设备驱动程序间提供了一个全双工通道。readv和writev:散布读和聚集写。散布读:将文件中的数据一次读到多个缓冲区中;聚集写:将多个缓冲区的数据一次写到文件中。好处是完成统一的操作,可以使用更少的系统调用。readn和writen向管道,fifo,终端,
chgaowei
·
2014-03-15 20:00
编程
unix
进程组/线程组/会话
可以参看
UNIX环境高级编程
的相关章节。为了搞清楚进程组之间的关系,我们做如下的实验:编写程序:[cpp] viewplaincopy/*test.c*/ #include "..
wenwuge_topsec
·
2014-03-12 17:00
linux
会话
进程组
linux后台开发必看书
原文出自:http://blog.chinaunix.net/u3/97858/showart_2015110.html程序设计类《C++PRIMER》系统编程类《
UNIX环境高级编程
》W.RichardStevens
wconvey
·
2014-03-12 08:00
UNIX环境高级编程
——进程管理和通信(总结)
UNIX环境高级编程
——进程管理和通信(总结)分类: LinuxOS APUE ProcessandThread2013-07-1912:49 396人阅读 评论(0) 收藏 举报进程管理与通信进程的管理进程和程序的区别
pi9nc
·
2014-03-11 19:00
thread
linux
OS
process
and
apue
高级IO(一)--
UNIX环境高级编程
读书笔记
在前面学习了文件IO,标准IO和终端IO,现在学习高级IO,UNIX中怎么有这么多的IO。1.非阻塞IO 可以将系统调用分为两类:低速系统调用和其他。低速系统调用是可能会使进程永远阻塞的一类系统调用。非阻塞IO可以使用不会永远阻塞的IO操作,如果这种操作不能完成,则立即出错返回,表示该操作如果继续执行,将继续阻塞下去。 对于一个给定的文件描述符,有两种方法对其指定非阻塞的IO:
xiaocainiaoshangxiao
·
2014-03-10 19:00
锁
释放
非阻塞IO
高级IO
unix高级编程
《
UNIX环境高级编程
》笔记--伪终端
1.什么是伪终端伪终端对于一个程序来说,看上去像一个终端,但事实上并不是一个真正的终端。下图显示了使用伪终端时相关进程的典型结构。1.通常一个进程打开伪终端主设备,然后调用fork。子进程建立了一个新的会话,打开一个相应的伪终端从设备,将其文件描述符复制到标准输入、标准输出和标准出错,然后调用exec。伪终端从设备成为子进程的控制终端。2.对于伪终端从设备之上的用户进程来说,其标准输入、标准输出和
TODD911
·
2014-03-10 16:00
《
UNIX环境高级编程
》笔记--规范模式和非规范模式
1.规范模式规范模式很简单:发一个读请求,输入完一行后,终端驱动程序即返回。(终端的行缓冲应该就是通过终端IO函数来实现的)下列几个条件都会造成读返回。1.所要求的字节数已读到时,读返回。无需读一个完整的行。如果读了部分行,那么也不会丢失任何信息,下一次读从前一次读的停止处开始。2.但读到一个定界符时,读返回。在规范模式中下列字符为解释成行结束:NL、EOL、EOL2和EOF。另外,如若已设置IC
TODD911
·
2014-03-08 20:00
《
UNIX环境高级编程
》笔记--行控制函数、终端标识、终端窗口大小
1.行控制函数下列4个函数提供了终端设备的行控制能力,其中,参数filedes引用一个终端设备,否则出错返回,errno设置为ENOTTY。#include inttcdrain(intfiledes); inttcflow(intfiledes,intaction); inttcflush(intfiledes,intqueue); inttcsendbreak(intfledes,intdur
TODD911
·
2014-03-06 16:00
《
UNIX环境高级编程
》笔记--特殊输入字符
POSIX.1定义了11个在输入是做特殊处理的字符。实现定义了另外一些特殊字符。下表摘要列出了这些特殊字符。POSIX.1允许禁用这些字符。若将c_cc数组中的某项设置为_POSIX_VDISABLE的值,则禁用相应的特殊字符。可以使用tcsetattr函数进行操作。使用函数tcgetattr和tcsetattr可以获得或设置termios结构。#include inttcgetattr(intf
TODD911
·
2014-03-05 18:00
《
UNIX环境高级编程
》 —— 错误处理函数
UNIX环境高级编程
一书中示例程序经常使用的错误处理函数。把这些函数保存到一个文件中,方便学习使用。
wangyuling1234567890
·
2014-03-04 23:00
编程
unix
Unix环境高级编程
错误处理函数
《
UNIX环境高级编程
》 —— 公共头文件 apue.h
UNIX环境高级编程
一书中示例程序都需要包含的头文件。把用到的头文件及一些宏定义都定义在这个文件中,方便学习者使用。
wangyuling1234567890
·
2014-03-04 22:00
编程
unix
Unix环境高级编程
apue.h
《
UNIX环境高级编程
》笔记--终端IO
终端IO有两种不同的工作模式:1.规范模式输入处理。在这种模式中,终端输入以行为单位进行处理。对于每个读要求,终端驱动程序最多返回一行。例如,若shell把标准输入重定向到终端,2.非规范模式输入处理。输入字符并不组成行。终端设备是由一般位于内核中的终端驱动程序控制的。每个终端设备有一个输入队列和一个输出队列。大多数UNIX系统在一个称为终端行规程(terminallinediscipline)的
TODD911
·
2014-03-04 20:00
Linux下的进程间通信-详解
而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著名作者RichardStevens的著名作品:《AdvancedProgrammingintheUNIXEnvironment》,它的中文译本《
UNIX
eastlhu
·
2014-03-03 20:00
《
UNIX环境高级编程
》笔记--UNIX域套接字
1.非命名的UNIX域套接字UNIX套接字用于在用一台机器上运行的进程之间通信。UNIX套接字比因特网域套接字的效率更高。UNIX与套接字提供和数据报两种接口,UNIX域数据报服务是可靠的,就不会丢失消息也不会传递出错。UNIX域套接字是套接字和管道之间的混合物。为了创建一对非命名的,相互连接的UNXI域套接字,用户可以使用socketopair函数。#include intsocketpari(
TODD911
·
2014-03-02 16:00
《
UNIX环境高级编程
》笔记--套接字选项,带外数据
1.套接字选项套接字机制提供两个套接字选项接口来控制套接字行为。一个接口用来设置选项,另一个接口允许查询一个选项的状态。可以获取或设置三种选项:1.通用选项,工作在所有套接字类型上。2.在套接字层次管理的选项,但是依赖于下层协议的支持。3.特定于某协议的选项,为每个协议独立。SUS仅定义了套接字层的选项。(1和2)可以采用setsockopt函数来设置套接字选项。#include intsetso
TODD911
·
2014-02-28 22:00
《
UNIX环境高级编程
》笔记--套接字数据传输
套接字端点表示为文件描述符,只要建立连接,就可以使用read和write来通过套接字通信。在套接字描述符上采用read和write是非常有意义的,因为可以传递套接字描述符到那些原来设计为处理本地文件的函数。而且可以安排传递套接字描述符到执行程序的子进程,该子进程并不解释套接字。但是如果想指定选项,从多个客户端接受数据报或者发送带外数据,则需要采用六个传递数据的套接字函数中的一个。最简单的send,
TODD911
·
2014-02-28 14:00
《
UNIX环境高级编程
》笔记--套接字描述符、寻址、建立连接
1.套接字描述符套接字是通信端点的抽象。与应用程序使用文件描述符访问文件一样,访问套接字也需要用套接字描述符。要创建一个套接字,可以调用socket函数。#include intsocket(intdomain,inttype,intprotocol);//成功返回套接字描述符,出错返回-1.domain确定通信的特性,包括地址格式。下表总结了POSIX.1指定的各个域。参数type确定套接字的类
TODD911
·
2014-02-25 09:00
unix环境高级编程
阅读更多
unix环境高级编程
笔记准备工作1.安装unix或Linux这里安装的是linux(虚拟机安装)虚拟机连接有三种方式:hostonly,桥接,nat,其中a.Hostonly:vmnet1ip:
handawei
·
2014-02-24 15:00
unix环境高级编程
unix环境高级编程
笔记准备工作1.
handawei
·
2014-02-24 15:00
unix
unix环境高级编程
unix环境高级编程
笔记准备工作1.
handawei
·
2014-02-24 15:00
unix
《
UNIX环境高级编程
》笔记--XSI IPC
1.XSIIPC有三种IPC我们称作XSIIPC,即消息队列,信号量和共享存储器,他们之间有很多相似之处。1.1.标识符和键每个内核中的IPC结构(消息队列,信号量或共享存储段)都用一个非负整数的标识符加以引用。标识符是IPC对象的内部名,为使多个合作进程能够在同一IPC对象上回合。需要提供一个外部名方案。为此使用了键(key),每个IPC对象都与一个键相关联,于是键就用作该对象的外部名。无论何时
TODD911
·
2014-02-21 16:00
it 好书
基础:深入理解计算机系统编码:代码大全 linux:深入理解linux内核深入linux内核架构
unix环境高级编程
项目管理:
techtitan
·
2014-02-16 20:00
2014学习计划
读完
unix环境高级编程
,unix网络编程卷一卷二,对操作系统有基本的认识,能够处理绝大多数android开发遇到的问题,能够单挑一个app。
lirongwei
·
2014-02-04 15:00
《
UNIX环境高级编程
》笔记--管道
1.pipe管道是UNIX系统IPC的最古老形式,并且所有的UNIX系统都提供此种通信机制。管道有下列两种局限性:a.历史上,它们是半双工的,现在某些系统提供全双工管道,但是为了最佳的可移植性,我们决不应预先假定系统使用此特性。b.它们只能在具有公共祖先的进程之间使用。通常一个管道由一个进程创建,然后该进程调用fork,此后父子进程之间可以使用该管道。(FIFO没有第二种局限性,UNIX域套接字和
TODD911
·
2014-01-29 10:00
《
UNIX环境高级编程
》笔记--存储映射IO
存储映射IO使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应的字节;将数据存入缓冲区,则相应字节就自动写入文件,这样就可以在不是用read和write的情况下执行IO。这可以通过mmap函数实现。#include void*mmap(void*addr,size_tlen,intprot,intflag,intfiledes,off_toff); //成
TODD911
·
2014-01-27 16:00
《
UNIX环境高级编程
》笔记--readv和writev函数
readv和write函数用于在一次函数调用中读,写多个非连续缓冲区。#include ssize_treadv(intfiledes,conststructiovec*iov,intiovcnt); ssize_twritev(intfiledes,conststructiovec*iov,intiovcnt); //若成功则返回已读,写的字节数,若出错则返回-1。这两个函数的第二个参数是指向i
TODD911
·
2014-01-26 12:00
《
UNIX环境高级编程
》笔记--IO多路转换
如何才能read多个描述符呢,有下面这些方法。a.使用多个进程,每个进程执行阻塞read,但是这也产生了问题,操作什么时候停止?如果子进程接收到文件结束符,那么子进程终止,然后父进程接收到SIGCHLD信号,但是,若父进程终止,那么父进程应该通知子进程停止,为此可以使用一个信号(例如SIGUSR1),但这是程序变得更加复杂。b.使用多线程,这避免了终止的复杂性,但是要求处理线程之间的同步同样是程序
TODD911
·
2014-01-26 10:00
《
UNIX环境高级编程
》笔记--STREAMS
STREAMS(流)是systemV提供的构造内核设备驱动程序和网络协议包的一种通用方法。流在用户进程和设备驱动程序之前提供了一条全双工通路。流无需和实际硬件设备直接会话,流也可以用来构造伪设备驱动程序,下图是一个简单流的基本构造。在流首之下可以压入处理模块,这个可以用ioctl命令实现,下图表示包含一个处理模块的流。各方框之间用两根带箭头的线连接,以突出流的全双工特性,并强调两个方向的处理是相互
TODD911
·
2014-01-23 13:00
《
UNIX环境高级编程
》笔记--记录锁
记录锁的功能是:当一个进程正在读或者修改文件的某一个部分时,它可以阻止其他进程修改同一文件区。记录锁其实是字节范围锁,因为它锁定的只是文件中的一个区域,也可能是整个文件。1.fcntl记录锁SVR3通过fcntl函数增加了记录锁功能。fcntl函数的原型已经在以前给出,这边再重复一次。#include intfcntl(intfiledes,intcmd,.../*structflock*floc
TODD911
·
2014-01-22 16:00
《
UNIX环境高级编程
》笔记--非阻塞IO
系统调用分成低速系统调用和其他系统调用两类。低速系统调用是可能会使进程永远阻塞的一类调用调用,他们包含:如果某些文件类型(例如管道,终端设备和网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞。如果数据不能立即被上述相同类型的文件接受(由于在管道中无空间,网络流控制等),则写操作也会使调用者永远阻塞。在某些条件发生之前,打开某些类型的文件会被阻塞。(例如开打一个终端设备可能需要等到与之连接的
TODD911
·
2014-01-22 09:00
《
UNIX环境高级编程
》笔记--出错记录
与守护进程有关的一个问题是如何处理出错消息。因为它没有控制终端,所以不能只是简单地写到标准出错上,我们希望有一个集中的守护进程出错记录设施。自4.2BSD以来,BSDsyslog设施得到了广泛应用。大多数守护进程使用这一设施。下图显示了syslog设置的详细组织结构;有三种方法产生日志消息:1.内核例程可以调用log函数。任何一个进程通过打开然后读/dev/klog设备就可以读取这些消息。2.大多
TODD911
·
2014-01-21 10:00
《
UNIX环境高级编程
》笔记--守护进程
1.守护进程编程规则守护进程也被称为精灵进程(daemon),是生存期较长的一种进程。常常在系统启动时启动,仅在系统关闭时才终止,因为它没有控制终端,所以说他它们是在后台运行的。编写守护进程程序时需要遵循一些基本规则,以便防止产生并不需要的交互作用,下面先说明这些规则:1.调用umask将文件模式创建屏蔽字设置为0。因为由继承的来的文件模式创建屏蔽字可能会拒绝设置某些权限。2.调用fork,然后使
TODD911
·
2014-01-20 10:00
linux下运行《
UNIX环境高级编程
》的第一个程序时源码编译出错的处理方法
前几天买了《
UNIX环境高级编程
》这本书,想好好学习下linux的编程。谁知道看到第一个列出指定目录的内容的那个例子,其实就是shell中ls的内容,打好代码要运行时一直出问题。
叶子一哥
·
2014-01-19 22:07
linux学习笔记
UNIX环境高级编程
[置顶] linux下运行《
UNIX环境高级编程
》的第一个程序时源码编译出错的处理方法
前几天买了《
UNIX环境高级编程
》这本书,想好好学习下linux的编程。谁知道看到第一个列出指定目录的内容的那个例子,其实就是shell中ls的内容,打好代码要运行时一直出问题。
abc5382334
·
2014-01-19 22:00
linux
ls
编译错误
apue.h
myerr.h
《
UNIX环境高级编程
》笔记-线程和信号
每个线程都有自己的信号屏蔽字,但是信号的处理是进程中所有线程共享的。这意味着尽管单个线程可以阻止某些信号,但当线程修改了与某个信号相关的处理行为以后,所有的线程都必须共享这个处理行为的改变。这样如果一个线程选择忽略某个信号,而其他的线程可以恢复信号的默认处理行为,或者为信号设置一个新的处理程序,从而可以撤销上述线程的信号选择。进程中的信号是递送到单个线程的。如果信号与硬件故障或计时器超时相关,该信
TODD911
·
2014-01-17 21:00
寒假学习计划
寒假学习计划暑假33天 每个星期天休息不学习上午:linux高级编程 视频 每天 看一集当天写小结 看书《
UNIX环境高级编程
》 视频地址: http://pan.baidu.com
billvsme
·
2014-01-15 08:00
linux信号(二)--
unix环境高级编程
读书笔记
1.信号集 在linux中,可以用一个称为信号集的数据类型 sigset_t,来表示所有的被阻塞信号的一个集合。对这个集合的操作函数有:#include intsigemptyset(sigset_t*set); intsigfillset(sigset_t*set); intsigaddset(sigset_t*set,intsignum); intsigdelset(si
xiaocainiaoshangxiao
·
2014-01-14 21:00
linux
sigaction
sigprocmask
sigsuspend
sigemptyset
终端IO--
unix环境高级编程
读书笔记
终端IO部分整体上读了两遍,感觉这一部分的内容又乱又碎,不太好理解。读完了之后,仍然感觉什么也没有学到。先做一个肤浅的记录,等到以后要用到的时候,再回来补充。 1.终端IO的工作方式 终端IO有两种不同的工作方式,规范方式输入处理和非规范方式输入处理:(1)规范方式输入处理:终端以行为单位进行处理,对于每个读要求,终端驱动程序最多返回一行。 (2)非规范方式输入处理:输入字符不
xiaocainiaoshangxiao
·
2014-01-14 21:00
ioctl
终端IO
tcgetattr
unix高级编程
tcsetattr
《
UNIX环境高级编程
》笔记--线程和fork
我们先来看一个程序:#include #include pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER; void*th_fn(void*arg){ printf("startth_fn.\n"); pthread_mutex_lock(&mutex); printf("inth_fn.\n"); sleep(5); pthread_mutex_un
TODD911
·
2014-01-13 20:00
Linux终端传输二进制文件的属性设置
嵌入式中仅仅用到简单的串口功能,但是《
unix环境高级编程
》用了一章来讲终端IO,那么多功能很容易搞混。在此小结一下!
yuanlulu
·
2014-01-13 16:00
《
UNIX环境高级编程
》笔记--线程的取消选项
有两个线程并没有包含在pthread_attr_t机构中,他们是可取消状态和可取消类型,这两个属性影响着线程在响应pthread_cancel函数调用时所呈现的行为。可取消状态属性可以是PTHREAD_CANCEL_ENABLE和PTHREAD_CANCEL_DISABLE,线程可以通过调用pthread_setcancelstate修改它的可取消状态。#include intpthread_se
TODD911
·
2014-01-12 14:00
UNIX环境高级编程
chat1 从标准输入中读取命令执行
#include#includeconstintMAXLINE=16;intmain(void){ charbuf[MAXLINE]; pid_tpid; intstatus; printf("%%"); while(fgets(buf,MAXLINE,stdin)!=NULL){ if(buf[strlen(buf)-1]=='\n') buf[strlen(buf)-1]=0
brightming
·
2014-01-12 10:00
编程
《
UNIX环境高级编程
》笔记--线程属性
在之前调用pthread_create函数的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结构的指正,可以使用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联系起来。可以使用pthread_attr_init函数初始化pthread_attr_t结构。调用pthread_attr_init后,pthread_attr_t结构所包含的内容就是操作系统
TODD911
·
2014-01-09 21:00
《
UNIX环境高级编程
》笔记--线程的同步
多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图。1.互斥量可以通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据,互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行枷锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量进行加锁的线程将被阻塞知道当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上阻塞
TODD911
·
2014-01-08 12:00
linux信号(一)--
unix环境高级编程
读书笔记
1.信号的概念 在这里要给出一个信号的准确概念感觉很困难,可以这么说,信号就是进程之间异步通信的一种机制,有点类似于中断的性质。在 linux 系统中有 31 种信号,每一种信号都以 SIG 三个字母开头,例如 SIGABRT 是夭折信号,就是调用 abort 函数产生的信号,SIGALRM 是调用 alarm 函数定时时间溢出后产生的信号。 对每一个信号,系统有三种处理方式:
xiaocainiaoshangxiao
·
2014-01-07 21:00
pause
信号
alarm
Signal
unix高级编程
《
UNIX环境高级编程
》笔记--线程的标识、创建和终止
1.线程标识就像每个进程都有一个进程ID一样,每个线程都有一个线程ID。进程ID在整个系统中是唯一的,但线程ID只在它所属的进程环境中有效。线程ID使用pthread_t数据类型来表示,实现的时候可以使用一个结构来表示pthread_t数据类型,所以可移植的操作系统实现不能将它比作整数处理。因此必须使用函数来对比线程ID进行比较。#include intpthread_equal(pthread_
TODD911
·
2014-01-06 09:00
上一页
15
16
17
18
19
20
21
22
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他