《UNIX环境高级编程》学习笔记
OneCode2World
这个作者很懒,什么都没留下…
展开
-
Unix编程学习笔记--------系统调用的疑问????? 到底什么是系统调用???? 系统调用是如何实现的???
到底什么是系统调用???? 系统调用是如何实现的???对于下面这段话,我们应该如何理解呢???“系统调用是内核提供给用户应用程序使用的内核函数名,这些函数提供了内核为用户 应用程序所提供的系统服务功能。这些函数在用户应用程序中的书写格式与用户自定义函 数形式上没有什么不同,但这些函数的编写和调用过程却与自定义函数有着很大的不同。原创 2015-09-28 20:59:24 · 566 阅读 · 0 评论 -
Unix编程学习笔记--------把一个库下载到系统中,那么这个库到底是什么??? 其内部的机制和原理是什么???
从一个实例出发:1. 利用yum下载一个 gtk库命令: yum -y install gtk我的疑问:1.下载这个库,到底是什么???是一系列的机器指令吗???2.这个下载的库是否仍调用了系统调用函数???3.如何定位所下载的库中函数的入口点的??? 或函数的地址的???4.是不是在系统内部有一张原创 2015-09-28 20:49:53 · 437 阅读 · 0 评论 -
Unix环境编程学习笔记------查看系统调用号文件
系统调用号: 系统调用号写在: /arch/x86/include/asm/unistd_32.h 文件中简要之,即:系统调用号写在 unistd_32.h 文件中。 下面是我查看系统调用号的过程: 截图: 文件所在的路径:/usr/src/kernels/2.6.32-431.el6.x86_64/arch/x86/include/unistd_32.原创 2015-09-29 09:49:20 · 588 阅读 · 0 评论 -
Unix环境编程学习笔记---------打开并查看系统调用表
打开并修改系统调用表: 系统调用表的位置:/ usr/src/linux-2.6.35-l3/arch/x86/kernel/syscall_table_32.S 上面所示的可以看到: 文件syscall_table_32.S就是系统调用表文件。 下面演示,打开系统调用表的步骤:1. 2. 3.4.原创 2015-09-30 08:47:39 · 1096 阅读 · 0 评论 -
Unix学习笔记-----对于守护进程的一些理解
我个人对于守护进程的理解: 一.首先关于守护进程的我的几个疑问:a) 守护进程有哪些特征???b) 如何才能使一个进程变为守护进程???c) 守护进程充当了什么作用???d) 在什么情况下,需要守护进程???e) 如何创建一个守护进程??f) 守护进程与普通进程有哪些区别??g原创 2015-10-16 17:44:49 · 507 阅读 · 0 评论 -
如何看这个守护进程实例?????
#include#include#include#include#include#include#include#define MAXFILE 65535int main(){pid_t pc;int i,fd,len;char *buf="this is a dameon \n";len =strlen(buf);pc=fork(原创 2015-10-16 21:46:18 · 483 阅读 · 0 评论 -
unix/linux学习笔记------进程在什么情况下,会没有控制终端???
对于上面这句话,应该怎么理解??1.“由于会话对控制终端的独占性,进程同时与控制终端脱离”什么叫,“会话对控制终端的独占性”???意思就是说:一个会话单独占据一个控制终端,不可能出现两个会话同时共享一个控制终端。这也是为什么 setsid()函数能摆脱控制终端的原因,因为,一个控制终端只能被一个会话所拥有,而,setsid()函数调用成功之后,会创建一个新的会话原创 2015-10-16 21:17:22 · 2584 阅读 · 1 评论 -
Unix 环境高级编程--环境配置
转载自: http://blog.csdn.net/segen_jaa/article/details/8093471UNIX环境高级编程-环境配置分类: 基础编程2012-10-20 17:33 2313人阅读 评论(4) 收藏 举报unix编程nullubuntustructgcc背景说明:学习《UNIX环境高级编程》,里面的示例程序用到了作者写转载 2015-09-14 18:59:42 · 456 阅读 · 0 评论 -
Linux默认的include
转载自:http://www.cnblogs.com/hummersofdie/p/3727703.htmllinux 默认的include#include 中的module.h默认是在哪个目录下呢?我在/usr/include/linux下并没有找到这个文件。另外想问一下,不同内核版本的linux头文件是不是一样的。比如:我在2.6.20内核的系统上,用转载 2015-09-15 15:42:42 · 609 阅读 · 0 评论 -
unix/linux学习笔记----------umask (文件模式创建屏蔽字)的理解
1.umask文件模式创建屏蔽字与文件访问权限位的关系类似于IP地址与子网掩码的关系2.每一个文件都有9个访问权限位3.int umask(mode_t cmask) 其中cmask 是由9位访问权限常量的若干个按位“或”构成的,在进程创建一个新文件或新目录时,就一定会使用文件模式创建屏蔽字对于任何在文件模式屏蔽字中为1的位,文件mode 中相应的位一定被关闭原创 2015-10-18 12:13:58 · 1795 阅读 · 0 评论 -
makefile学习笔记------疑问篇
makefile 学习笔记:1.什么是makefile???2.makefile 有什么用???3.如何编写makefile???4.makefile的本质是什么???5.makefile 最终是不是调用gcc编译器???gcc编译器是如何理解和解释makefile的???6.makefile和make是什么关系??原创 2015-10-19 21:44:53 · 410 阅读 · 0 评论 -
王保明老师Linux学习笔记---------信号----signal()函数使用实例
信号编程实例:#include#include#include#includevoid handler(int num){printf("recv num:%d \n",num);if(num==SIGQUIT)//这个函数的参数是一个信号值,是由终端发送给内核,然后内核传递给进程的handler()函数。{exit(0);}el原创 2015-10-19 09:50:38 · 1107 阅读 · 0 评论 -
linux内核源文件介绍以及头文件的位置
转载自:http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425357.htmlLINUX 内核源文件介绍以及头文件介绍*******************LINUX 内核(0.11)源文件介绍******************1、内核源文件放置目录:||————boot 系统引导汇编程序目录转载 2015-10-05 17:12:26 · 2131 阅读 · 0 评论 -
unix环境配置
相信很多初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download:http://www.apuebook.com/ )时就出现问题,提示 "错误:apue.h:没有那个文件或目录". apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。转载 2015-09-17 01:10:41 · 553 阅读 · 0 评论 -
Unix编程学习笔记----对系统调用的完全理解
系统调用的具体流程: 参考《linux下系统调用原理解析及增加系统调用的方法》 我们首先看一下,unistd.h 所处的路径: 我们看一下unistd.h的文件内容。 现在我们就分析一下,这个unistd.h头文件的内容: 在文件中形如: #define --NR_syscallname NNN__SYSCALL(__NR_sy原创 2015-10-05 21:18:46 · 1059 阅读 · 0 评论 -
linux 学习笔记----文件系统的实现------目录实现和文件实现
转载自:http://c.biancheng.net/cpp/html/2625.html文件系统的实现:目录实现和文件实现下一节>分享到:QQ空间新浪微博腾讯微博豆瓣人人网零基础在线学习IT热门课程,掌握最前沿技术:北风网C语言中文网VIP会员:低至19.9元/月,阅读所有高级转载 2015-10-06 10:37:19 · 1965 阅读 · 0 评论 -
Unix编程学习笔记---文件系统与 i节点
文件系统: i节点与磁盘文件 : 首先提出我的一些问题:1. 文件描述符fd 、文件对象、i节点、磁盘文件之间是什么关系???a) 文件对象:表示进程已经打开的文件在内存中的表示,该对象不是物理上的文件,b) 文件对象在内存中有一段存储内容。c) 每一个文件对象都包含:文件的状态信息、内存中存储文件内容的缓冲原创 2015-10-06 21:45:00 · 1828 阅读 · 0 评论 -
linux管道机制
linux管道机制简介 管道是linux提供的一种常见的进程通信工具,也是很多shell命令能够灵活组合产生强大用途的一个重要工具。本文就八卦一下它是怎么实现的。唉,看完这片,我打算还是从进程管理,内存管理和文件管理这三大块开始看了,一开始以为这些边边角角的东西会容易懂一些,结果老是用到这三大块的东西,总要回去查。管道是什么?管道,顾名思义就是个管子,里面可转载 2015-10-22 12:27:57 · 736 阅读 · 0 评论 -
unix学习笔记--------对于管道的疑问????
管道的疑问:1.管道的本质是什么???2.管道与文件的本质区别是什么???3.linux内核是如何实现管道机制的???4.如何理解下面一句话???“管道对于管道两端的进程而言,就是一个文件,但它不是普通文件,它不属于某种文件系统,而且是单独的一种文件系统,并且它只存在与内存中”>什么是“单独的一种文件系统”???>什么叫“只存在于内存中”????原创 2015-10-22 11:10:25 · 433 阅读 · 0 评论 -
Unix/linux学习笔记-------彻底理解管道
彻底理解管道是什么???疑问: 为什么说管道是文件???管道为什么能用于进程间通信???下面是一些对管道的叙述:::::::::::::::::::::::::::::::: 摘自:《操作系统原理 技术与编程》 实现无名管道的传统方法是利用文件系统机制,把管道看作是一个打开的文件,因此它有一个i节点和两个文件表项。但是这个”打开的文件“并不原创 2015-10-08 13:21:32 · 815 阅读 · 0 评论 -
unix学习笔记---------自己写的管道实例----父子进程通信
#include#include#include#include#includeint main(void){//define some varpid_t pc;int pp;int mfd[2];char parray[10];char carray[10];//create a pipepp=pipe(mfd);//jud原创 2015-10-22 16:27:24 · 451 阅读 · 1 评论 -
unix编程学习笔记-------对于消息队列的本质的疑问????
对于消息队列的本质的疑问:1.消息队列的本质是什么???2.OS是如何实现消息队列的???3.消息队列为什么能用于进程间通信???4.消息队列与管道的内部实现的本质区别是什么???5.消息队列是不是用队列算法实现的???6.每一个消息在内核中是如何存储的??7.消息队列与管道的区别是什么???8.如何创建一个消息???9.消息队列与文件描述符有什么联系吗???原创 2015-10-23 15:02:07 · 402 阅读 · 0 评论 -
unix学习笔记------msgctl函数的使用
// msgctl函数的使用:#includeint main(){int msgid;int ret=0;//rwxmsgid=msgget(0x1234,0666);if(msgid==-1){if(errno==ENOENT){printf("我们自己检查。。。消息队列不存在\n");}if(errn原创 2015-10-23 16:12:44 · 884 阅读 · 0 评论 -
操作系统的疑问--------有关磁盘与文件系统及系统启动的疑问????
有关磁盘与文件系统及系统启动的疑问:?????1.我们知道当我们装系统时,第一步所做的工作就是分区,我们通常把硬盘划分成4个分区。其中一个是活动分区。那么,当我们在DiskGenius 中点击,“分区”按钮的时候,分区工作就已经完成了,但是,我疑问的是:它具体做了哪些工作???生成了什么??? 向硬盘中写入了什么???生成了什么??分原创 2015-10-09 15:32:05 · 418 阅读 · 0 评论 -
unix学习笔记------消息队列的接收
消息队列的接收:#include#include#include#includeint main(){int msgid;int ret=0;//rwxstruct msgbuf{long mtype;char mtext[1024];}msgid=msgget(0x1234,0666);i原创 2015-10-23 21:45:09 · 522 阅读 · 0 评论 -
Unix学习笔记------书本例题编程实例------从标注输入读入然后从标准输出输出
Day01_从标准输入读入然后从标准输出输出。 要点:1.在Linux中,标准输入,标准输出都是文件,都有文件描述符。a) 在Linux中:b) 标准输入的文件描述符是: 0c) 标准输出的文件描述符是: 1d) 标准出错的文件描述符是:2 2.对于read write 这俩个系统调用的使用:Ø原创 2015-11-09 14:17:09 · 449 阅读 · 0 评论 -
Unix学习笔记------实例练习---Day02_access函数文件访问权限测试
Day02_access函数文件访问权限测试:::::::::: /* access()函数,文件访问权限测试, 能测试这个进程是否有权限访问这个文件。 access函数原型: :::::::::::: access - check real原创 2015-11-10 14:14:56 · 534 阅读 · 0 评论 -
Unix学习笔记------文件IO------使用lseek设置文件当前读写偏移量(即:当前的读写位置)
文件IO------使用lseek设置文件当前读写偏移量(即:当前的读写位置) 实例:把my.txt 的文件当前的读写位置向后移动5个字节。 一.My.txt的文件内容如下:a) [root@localhost file1]# catmy.txtb) hello world i am a student of angong collea原创 2015-11-09 20:16:39 · 1170 阅读 · 0 评论 -
unix环境编程学习笔记-----P51:lseek()函数
lseek ()函数:1.lseek()函数是一个系统调用,所需头文件为:#include2.功能:lseek()函数是用于设置文件的读写位置指针的。所设置的文件读写指针位置==offset+whence;3.lseek函数的原型:off_t lseek(int fields ,off_t offset, int whence);要点: 所设置的文件原创 2015-10-10 15:47:16 · 489 阅读 · 0 评论 -
unix学习笔记------消息队列---发送消息
发送消息#include#include#include#includeint main(){int msgid;int ret=0;//rwxstruct msgbuf{long mtype;char mtext[1024];}msgid=msgget(0x1234,0原创 2015-10-23 21:46:42 · 389 阅读 · 0 评论 -
unix学习笔记------套接字-----王保明老师的笔记
linux Socket-应用编程-专题讲座 written by 王保明Socket编程基本实践1Socket Api基本概念 什么是socket?socket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。 tcp/ip通讯模型 IPv4套接口地址原创 2015-10-25 13:20:44 · 1086 阅读 · 0 评论 -
unix学习笔记-------利用dup()函数来达到共享同一个文件表项的作用
dup函数: 源代码如下: /*/* dup()函数的使用: 1.dup()函数的作用是什么??? 利用dup()函数来达到共享同一个文件表项的作用。 (个人): 因为一个文件描述符指向一个打开文件文件对象,所以,如果俩个文件描述符的内容原创 2015-11-09 21:58:19 · 707 阅读 · 0 评论 -
Unix学习笔记----编程实例-------Link函数的实例使用:
Link函数的实例使用: :分析:/* 我们首先要解决几个问题: 1.什么是一个文件的硬链接?? 2.什么是软连接??? 硬链接和软链接的区别是什么??? 3.link()函数的实质是不是创建一个硬链接?? ::::::::::::::::::::原创 2015-11-11 17:56:56 · 631 阅读 · 0 评论 -
Unix学习笔记------Stat函数与chmod函数的配合使用
Stat函数与chmod函数的配合使用: /* 两个问题: 1.如何查看一个文件的访问权限?? 2.如何修改一个文件的访问权限?? 那么,我们就来解决这两个问题: 1.我们使用stat() stat()函数原型:原创 2015-11-11 16:50:59 · 658 阅读 · 0 评论 -
unix环境编程学习笔记------套接字缓冲区的原理
转载自:http://oss.org.cn/kernel-book/ch12/12.4.2.htm套接字缓冲区操作基本原理在传输过程中,存在着多个套接字缓冲区,这些缓冲区组成一个链表,每个链表都有一个链表头sk_buff_head ,链表中每个节点分别对应内存中一块的数据区。因此对它的操作有两种基本方式:第一种是对缓冲区链表进行操作;第二种是对缓冲区对应的数据区进行控制。当转载 2015-09-22 19:24:43 · 600 阅读 · 0 评论 -
《王保明老师----Linux开发学习笔记》------讲03:进程 -----fork( )函数的一点理解
对于fork的一点理解:先看实例:#includeint main(){pid_t pid;pid=fork();if(pid{printf("error in fork ");}elseif(pid==0)printf("i am the child process ,my id is %d \n",getpi原创 2015-10-13 09:16:36 · 591 阅读 · 0 评论 -
unix编程学习笔记----有问题就找man----如何用man ???
$: man manman(1) man(1)NAME man - format and display the on-line manual pagesSYNOPSIS man [-acdfFh原创 2015-10-26 20:51:18 · 451 阅读 · 0 评论 -
Unix环境编程学习笔记------在进程间传送文件描述符
1.在进程间传送文件描述符是如何实现的???其实现机制是什么???2.在技术上,发送进程实际上向接收进程传送的是一个指向一打开文件表项的指针,该指针被分配存放在接收进程的第一个可用的描述符项中。原创 2015-09-22 19:42:28 · 390 阅读 · 0 评论 -
unix环境编程学习笔记---------套接字------socket------客户端
简单的客户端:::::socket/*要点:对于给定的监听套接口,内核要为其维护俩个队列:1.已完成连接的队列2.未完成连接的队列*/ int main() {int sockfd =0;sockfd =socket(PF_INET,SOCK_STREAM,0);if(s原创 2015-10-27 15:41:00 · 433 阅读 · 0 评论 -
Unix学习笔记-----编程练习实例------使用vfork&&execv()在程序中加载可执行程序
vfork&&execv()实现在程序中加载可执行程序: 分析过程:::::::::::::::: /* 任务: 编写一个程序能在程序中执行shell 命令。 或执行 bash 命令。我在/home/code/file1/这个目录下写了一个可执行的shell程序: 代码如下:原创 2015-11-12 13:31:03 · 731 阅读 · 0 评论