APUE学习笔记-一些准备】的更多相关文章

转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int kill(pid_t pid,int signo); int raise(int signo); Both return: 0 if OK,−1 on error kill向进程号为pid的进程发送signo信号 可以看出 下面两行代码是等价的: kill(getpid(), signo); raise(sig…
APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O是带缓冲的I/O(当然,标准I/O也可以设置为不带缓冲). 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用,比如read.write等操作都是通过文件描述符来实现的.文件描述符其实就是一个非负整数.当打开或者创建一个文件时,内核会向进程传递一个非负整数作为文件描述符,该文件描述符就可以…
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时候使用的平台是Windows+VMware+debian,使用secureCRT来连接(可以实现多个终端连接). 因为第一章是本书大概的描述,所以第一章的我打算写得详细一点,而且书本的原话占的比例会比较多,重点的东西会用粗体显示出来. 1.1  引言 所有操作系统都为他们所运行的程序提供服务.典型的…
从开始看APUE已经有快一个星期了,由于正好赶上这几天清明节放假,难得有了三天空闲假期可以不受打扰的学习APUE,现在已经看完前六章了,里面的大部分例程也都亲自编写,调试过了.但总觉得这样学过就忘,因此决定把这个学习过程记录下来,学到后面章节的时候回顾前面的章节,做到温故知新.也可以将自己在学习过程中遇到的问题记录下来. 本书对UNIX系统的提供的接口的方方面面进行了讲解,中间还穿插介绍了很多UNIX或类UNIX系统的相关知识,即使现在我只是看过了前六章,也感觉学到了不少知识,解决了我以前对LI…
对于lseek函数早在大一的C语言课上就有接触,但是几乎没有使用过,只记得是和文件偏移操作相关的 看了APUE上的示例,又使用od工具查看了内容,果然很神奇,很新鲜 figure3.2.c [c] #include "apue.h" #include <fcntl.h> char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ"; int main(void) { int fd; if…
APUE全称<Advanced Programming in the UNIX Environment>(UNIX环境高级编程) 书中例子大都使用作者自己写的头文件,所以需要解决一下,还好学习这本书的前辈还是很多的.所以还是记录一下解决过程吧,方便以后配置. APUE源码下载:http://www.apuebook.com/ (选择书的版本,然后Source Code) (一)解压缩 如这样的路径:/home/sincere/work/c/UNIX-C/apue.2e (二)修改文件 将apu…
本章介绍一种高级IPC---UNIX域套接字机制,并说明它的应用方法 UNIX域套接字 UNIX域套接字用于在同一台计算机上运行的进程(无关进程)之间的(全双工)通信.相比于因特网套接字,UNIX域套接字效率更高. UNIX域套接字仅仅复制数据,不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不要产生顺序号,无需发送确认报文. UNIX域套接字提供流和数据报两种接口,就像是套接字和管道的混合(双向的通信),使用socketpair函数创建一对无命名的.相互连接的UNIX域套接字 #in…
这次回顾APUE中第三四章的内容,主要是文件I/O操作相关的接口函数.    UNIX系统的文件I/O是不带缓冲的I/O,不带缓冲是指每个read和write都调用系统内核的一个系统调用. 1.文件描述符 UNIX I/O的所有函数都是基于文件描述符来操作的.那什么是文件描述符呢?文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.该文件描述符fd是所有UNIX I/O函数的操作对象.UNIX系统把文件描述符0与进程标准输入关联,把文件描述符1与进程标准…
system函数 system函数用方便在一个进程中执行命令行(一行shell命令). 用法如下: #include <stdio.h> #include <stdlib.h> int main() { printf("Hello\n"); system("sleep 5"); return 0; } 在程序中通过system调用了命令行 sleep 5.(这里知识举一个例子,当然可以执行一个类似" bash test.sh&quo…
线程标识 线程由线程号进行标识.线程号仅在线程所属的进程环境中有效.也就是说属于不同进程的两个线程可能线程号一样. 线程标识用结构体pthread_t tid表示.与线程Id相关的函数如下: 比较两个线程ID: #include <pthread.h> int pthread_equal(pthread_t tid1,pthread_t tid2); Returns: nonzero if equal, 0 otherwise 获取自身线程ID: #include <pthread.h&…