
Unix环境编程
文章平均质量分 74
Daemon在路上
我是Daemon,一起打怪升级吧,私信一般都会回~
展开
-
Unix环境编程练习一:第一章程序源码
在学习Unix环境编程时,本着实事求是的精神,将第一章代码全部码了一遍。由于我是根据题目自己写的,和书上代码有一些出入,功能基本实现。第一章题目:1-1:实现ls功能,即列出一个目录下所有文件名1-2:复制任意Unix文件(使用系统I/O)1-3:用标准I/O实现1-21-4:打印当前进程id1-5:打印用户id和组id1-6:从标准输入读取命令并执行代码链接:https://pa...原创 2018-09-26 21:15:26 · 187 阅读 · 0 评论 -
【Chapter13*重点总结*】守护进程特征解读、出错消息记录、单实例守护进程
写在前面在初次接触时,书上介绍了守护进程的特征,然而我并不清楚守护进程具体在Linux中起到什么作用,在网上查了一些资料之后,才理解的更清楚一点。所以,要踏实的学习,有不懂的及时解决~~一、五个问题+一个实例总结了本章所讲的内容,可以压缩成五个问题和一个实例,解决了这五个就OK了1、什么是守护进程?相比普通的进程有什么特征,在Linux中一般起到什么作用?2、如何确保守护进程无终端?(切...原创 2018-12-24 16:46:44 · 298 阅读 · 0 评论 -
【Chapter11*重点总结*】线程基础控制(创建、退出、获得退出状态等)、线程同步
写在前面过去的一周,了解线程的基本概念,和各种控制原语,而更为重要的是线程同步的几种方式。为维护数据的顺序一致性,多线程之间需要同步完成对数据的操作,包括互斥量、读写锁、条件变量、自旋锁、屏障等方式。第八章和第九章是进程的概念,对比线程和进程来学习。一、线程的基础理解学进程的时候,有进程间同步。而我们提起线程时,会往往想起“多线程”,线程比起进程有什么好处呢?1、对于文件描述符共享或者内...原创 2018-12-18 21:34:08 · 149 阅读 · 0 评论 -
【Chapter10*编程总结*】解决multiple definition of `err_ret'问题以及文件包含、条件编译
写在前面一步一个知识点解决,稳扎稳打。搞清楚,弄明白,多动脑,脑子越不用越废,越废越不用,恶性循环~一、问题产生在实现父子进程同步时,我自己写的一个tell_wait.c文件,头文件是tell_wait.h文件,里面包含了apue.h,而主程序10-6.c中也包含了apue.h,两个文件联合编译时gcc 10-6.c tell_wait.c -o 10-6,则出现以下问题:/tmp/ccO...原创 2018-12-10 22:03:44 · 1298 阅读 · 0 评论 -
【Chapter10*重点总结*】信号基本解读以及父子进程同步应用(应用未解决)
写在前面在刚接触信号时,感觉是:由于信号是异步事件,无法控制何时会发生,所以早期的信号存在是否可重入的问题:异步信号安全。详细的,有可能信号发生时,进程正常执行的指令被中断。对于一些指令,如malloc分配存储空间时,malloc会为存储区维护一个链表,此时信号发生,进入到信号处理程序,再返回,有可能链表已被修改,分配存储空间出错,所以有些函数是不可重入的早期的信号有时是不可靠的,比如使用一个...原创 2018-12-10 17:12:48 · 412 阅读 · 0 评论 -
【Chapter11*编程总结*】链接-pthread库使用pthread_*函数
在使用多线程时,用到了线程控制原语,pthread_*系列函数,然而,编译提示:/tmp/ccRPOYFm.o: In function `main':11-4.c:(.text+0xc5): undefined reference to `pthread_create'11-4.c:(.text+0xeb): undefined reference to `pthread_join'11...原创 2018-12-13 21:27:11 · 989 阅读 · 0 评论 -
【Chapter8*编程总结*】gdb跟踪堆栈信息与重申标准IO与文件IO基本区别
写在前面在课后习题8-1,使用vfork创建子进程,子进程使用_exit(0)退出时不会执行清理程序,若换成exit(0)会执行终止处理程序和标准IO清理程序。这牵扯到标准IO的清理过程是怎样实现的:1、冲洗缓冲区,将缓冲区数据输出,与exit(0)运行结果一样2、关闭标准IO流,由于子进程在exit之前与父进程共享同一地址空间,则父进程标准IO被关闭,没有输出。大多数Unix系统exit...原创 2018-11-30 11:31:50 · 404 阅读 · 0 评论 -
【Chapter7*重点总结*】深入进程环境的三大重点:启动与终止、存储空间布局、存储空间分配、
写在前面前两天刚从外面旅游回来,旅游之前已经把进程环境搞的差不多清楚了,这几天又往后理解了进程的几个控制原语。要想了解进程是如何执行的,进程环境必须搞清楚。接下来,将根据提出的问题深入的挖一挖。一、四个问题我们平时一直使用shell的./来运行一个程序,那大家有没有想过,这个程序到底怎么被运行的呢?有几个问题,总结一下:1、一个进程如何运行,main函数怎么被调用,程序又如何终止?2、进...原创 2018-11-29 16:06:36 · 148 阅读 · 0 评论 -
【Chapter5*编程总结*】标准I/O :fgets和fputs,不同缓冲区长度调用次数
写在前面不积跬步无以至千里,无一例外,这次又出现了段错误,为解决这个小问题,这次成功get到gdb调试的方法,在代码中直接定位错误,一、标准IO:fgets和fputs标准IO中,对流每次一行读写,使用的是fgets和fputs函数fgets(char* restrict buf,int n,FILE* restrict fp);表示将从流中每次读取一行到缓冲区buf中(一直读到换行符)...原创 2018-11-15 16:12:52 · 622 阅读 · 3 评论 -
【Chapter4*编程总结*】(含源码)复制空洞文件且不把0复制到新文件
一、写在前面不积跬步无以至千里,一点点累积最后达到意想不到的效果。认真对待每一个小细节,一点点改正修订,往往是问题关键所在。二、coding中遇到的坑步骤一:创建两个文件,一个是空洞文件,另一个是非空洞文件,分析比较两者不同。2-1 shell中出现乱码创建无空洞文件时,shell中出现乱码。观察到新创建的文件大小为0,没有数据写入。初步推测文件描述符的问题。查看创建文件代码:if(...原创 2018-11-08 16:43:38 · 312 阅读 · 0 评论 -
【Chapter4*重点总结*】文件删除以及du和df的区别
一、unlink文件看下面的删除文件代码,如果在执行前、执行中(睡眠的15秒)、执行后分别查看磁盘空间大小,会有什么不同呢?//删除一个文件,并且在15秒后关闭程序 #include"apue.h" #include"fcntl.h" int main(int argc,char* argv[]) { int fd; if(argc<2){原创 2018-11-09 11:39:36 · 240 阅读 · 0 评论 -
【Chapter3 *重点总结*】文件描述符、打开文件表、v节点关系详解
一、文件描述符概念Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。二、文件描述符、文件、进程间的关系1.描述:每个文件描述符会与一个打开的文件相对应不同的文件描述符也可能指向同一个文件相同的文件可以被不同...转载 2018-10-06 15:48:24 · 843 阅读 · 0 评论 -
【Chapter13*编程总结*】创建守护进程、多进程调试、查看登录名(含源码)
写在前面创建守护进程后调试查看守护进程ID,以及该进程的登录名,并且是写入到log文件中。步骤很简单:1、实现进程无终端调用setsid,为防止进程组长申请终端,再次fork,exit创建进程组第二个进程2、关闭所有文件描述符3、更改为根目录 (由于守护进程生存周期是在系统引导装入之后)4、更改文件创建模式屏蔽字详情参见链接:https://blog.youkuaiyun.com/vainf...原创 2018-12-25 17:09:20 · 453 阅读 · 0 评论