1.源代码的下载,编译和测试

一.源代码的下载和编译 源代码下载地址:点击这里 , 下载下来得到unpv13e.tar.gz文件 编译步骤:  解压缩zxvf unpv13e.tar.gz tar zxvf unpv13e.tar.gz 进入unpv13e文件夹中 cd /unpv13e ./configure//如果权...

2017-09-19 19:01:28

阅读数:89

评论数:0

《UNIX环境高级编程》笔记77--伪终端

1.什么是伪终端 伪终端对于一个程序来说,看上去像一个终端,但事实上并不是一个真正的终端。下图显示了使用伪终端时相关进程 的典型结构。 1.通常一个进程打开伪终端主设备,然后调用fork。子进程建立了一个新的会话,打开一个相应的伪终端从设备,将其文件 描述符复制到标准输入、标准输出和标准出错,...

2017-09-19 18:43:01

阅读数:88

评论数:0

《UNIX环境高级编程》笔记76--规范模式和非规范模式

1.规范模式 规范模式很简单:发一个读请求,输入完一行后,终端驱动程序即返回。(终端的行缓冲应该就是通过终端IO函数来实现的) 下列几个条件都会造成读返回。 1.所要求的字节数已读到时,读返回。无需读一个完整的行。如果读了部分行,那么也不会丢失任何信息,下一次读从前一次 读的停止处开始。 2.但读...

2017-09-19 18:41:08

阅读数:63

评论数:0

《UNIX环境高级编程》笔记74--特殊输入字符

POSIX.1定义了11个在输入是做特殊处理的字符。实现定义了另外一些特殊字符。下表摘要列出了这些特殊字符。 POSIX.1允许禁用这些字符。若将c_cc数组中的某项设置为_POSIX_VDISABLE的值,则禁用相应的特殊字符。可以使用 tcsetattr函数进行操作。 使用函数tc...

2017-09-19 18:35:46

阅读数:65

评论数:0

《UNIX环境高级编程》笔记60--非阻塞IO

系统调用分成低速系统调用和其他系统调用两类。低速系统调用是可能会使进程永远阻塞的一类调用调用,他们包含: 如果某些文件类型(例如管道,终端设备和网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞。如果数据不能立即被上述相同类型的文件接受(由于在管道中无空间,网络流控制等),则写操作也会...

2017-09-12 15:09:22

阅读数:67

评论数:0

《UNIX环境高级编程》笔记13--chown,fchown和lchown函数

这三个函数都是用来更改文件的用户ID和组ID的,函数的定义如下: [cpp] view plain copy #include    int chown(const char *pathname, uid_t owner, gid_t group);   int fchown(...

2017-09-06 11:18:05

阅读数:175

评论数:0

《UNIX环境高级编程》笔记12--chmod函数和fchmod函数

这2个函数都是用来改变现有文件的访问权限的。函数的定义如下: [cpp] view plain copy #include   int chmod(const char* pathname, mode_t mode); //通过文件名对指定的文...

2017-09-06 11:15:50

阅读数:156

评论数:0

《UNIX环境高级编程》笔记11--umask函数

umask函数为进程设置文件模式创建屏蔽字,并返回以前的值。函数的定义如下: [cpp] view plain copy #include    mode_t umask(mode_t cmask);   //函数只有成功返回值:以前的文件模...

2017-09-06 10:29:01

阅读数:129

评论数:0

《UNIX环境高级编程》笔记10--access函数

access函数是按照实际用户ID和实际组ID进行访问测试的。函数的定义如下: [cpp] view plain copy #include    int access(const char* pathname, int mode);   /...

2017-09-06 10:14:46

阅读数:155

评论数:0

《UNIX环境高级编程》笔记9--文件访问权限和新文件、目录所有权

目录(?) [-] 与进程关联的用户ID和组ID文件的访问权限新文件目录的所有权 1.与进程关联的用户ID和组ID 与一个进程关联的ID有一下几个: 实际用户ID和实际组ID标识我们究竟是谁。通常在一个会话间值是不会改变的,但是超级用户进程有方法改变 他...

2017-09-06 10:10:11

阅读数:126

评论数:0

《UNIX环境高级编程》笔记8--fcntl函数

fcntl函数可以改变或者查看已打开文件的性质。该函数的定义如下: [cpp] view plain copy #include    int fcntl(int fd, int cmd);   int fcntl(int fd, i...

2017-09-06 09:40:07

阅读数:141

评论数:0

《UNIX环境高级编程》笔记7--文件长度和文件截短

1.文件长度 stat结构的st_size成员以字节为单位表示文件的长度,此字段只对普通文件,目录文件和符号链接有意义。 stat结构的st_blksize成员是对文件IO较合适的块长度,在介绍系统IO调用时,该值为4096B。 stat结构的st_blocks成员是所分配的实际512字节块...

2017-09-06 09:10:42

阅读数:147

评论数:0

《UNIX环境高级编程》笔记6--文件类型

UNIX文件类型主要包含如下几种: 1.普通文件(regular file) 2.目录文件(directory file) 3.块特殊文件(block special file),这种文件提供对设备(例如硬盘)带缓冲的访问,每次访问以固定长度为单位进行。 4.字符特殊文件(...

2017-09-06 09:01:32

阅读数:88

评论数:0

《UNIX环境高级编程》笔记5--文件共享

1.文件共享 内核使用3种数据结构来表示打开的文件,他们的关系如下: 每个进程都有一张进程表项,记录进程打开的文件: fd标志:close_on_exec,若一个文件描述符在close_on_exec中的对应比特位被设置,那么在执行execl函数时该描述符将被关闭, 即在execl函数...

2017-09-06 08:49:07

阅读数:188

评论数:0

《UNIX环境高级编程》笔记4--open函数,create函数,close函数

1.open函数 说明: 调用open函数打开或者创建一个文件。函数定义如下: [cpp] view plain copy #include        int open(const char *pathname, int flag);   ...

2017-09-06 08:39:57

阅读数:619

评论数:0

《UNIX环境高级编程》笔记3--sync、fsync和fdatasync函数

传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘 I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满 或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后...

2017-09-05 20:47:25

阅读数:129

评论数:0

《UNIX环境高级编程》笔记2--UNIX标准化及实现

1.UNIX标准化 1.1.ISO C 1989年后期,C程序设计语言的ANSI(American National Standards Institute)标准X3.159-1989得到批准(ANSI 1989)。 此标准已被采用为国际标准ISO/IEC 9899:1990。 1...

2017-09-05 20:39:15

阅读数:91

评论数:0

《UNIX环境高级编程》笔记1--errno是否是线程安全的?

当UNIX函数出错时,常常返回一个负数,而且整形变量errno通常被设置为含有附加信息的一个值,例如,open函数如成功,返回 一个非负文件描述符,如果出错就返回-1,在open出错时,有大约15种不同的errno值(文件不存在,权限问题等)。某些函数并不返回负数而是使用另一种约定。例如,返回一个...

2017-09-05 20:32:58

阅读数:164

评论数:0

UNIX环境编程学习笔记(28)——多线程编程(三):线程的取消

1 取消线程 pthread 提供了pthread_cancel 函数用于请求取消同一进程中的其他线程。 #include int pthread_cancel(pthread_t tid); 返回值:若成功则返回0,否则返回错误编码 pthread_cancel 调用...

2017-09-05 20:22:17

阅读数:85

评论数:0

UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

1 线程属性概括 POSIX 线程的主要属性包括 scope 属性、detach 属性、堆栈地址、堆栈大小、优先级。在头文件 pthread.h 中定义了结构体pthread_attr_t 来记录线程的属性。 在创建线程的函数pthread_create 的第二个参数 attr 就是一...

2017-09-05 17:50:12

阅读数:167

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭