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
APUE
UNIX环境高级编程学习环境搭建---
apue
.h
本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题。幸好网上有各种大神的解决办法让我最终解决了问题。在这里感谢为LINUX开源操作系统奋斗的大神。不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多。话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu14.04LTS)1.
Chen-ky
·
2018-04-12 10:57
linux
APUE
进程环境
本文使用golang的syscall,os,golang.org/x/sys/unix包1.main函数main是程序的入口,golang中也亦是如此启动一个程序时启动例程负责从内核获取命令行参数和环境变量,维护到程序的内存布局中(后文描述)2.exit//importosfuncExit(codeint)使程序主动退出,令退出码为指定值code,程序正常结束时返回码为0(在一般的shell中使用
openex
·
2018-04-04 16:18
《
APUE
》学习记录之———进程间通信
进程间通信:管道:管道只能在具有公共祖先的两个进程之间使用,通常,一个管道由一个进程创建,在进程调用fork之后,这个管道就可以在父子进程之间使用;#includeintpipe(intfd[2]);fd[0]为读打开,fd[1]为写打开,fd[1]的输出是fd[0]的输入(创建一个管道,然后调用fork,父进程关闭其读端,子进程关闭其写端,就建立了父进程写子进程读的管道);函数popen和pcl
捡垃圾的垃圾佬
·
2018-04-02 17:41
学习笔记
《
APUE
》学习记录之———多线程之间的同步
一个进程的所有线程都可以访问该进程的组成部分(文件描述符,内存等);每个线程都包含有表示执行环境所需的信息,其中包括进程中标识线程的线程ID,一组寄存器值,栈,调度优先级,信号屏蔽字,errno变量以及线程私有数据,一个进程所有信息对该进程的线程都是共享的,包括可执行程序的代码(正文段),程序的全局内存和堆内存,栈以及文件描述符;线程同步:线程同步的必要性:当多个控制线程共享相同的内存时,需要确保
捡垃圾的垃圾佬
·
2018-04-02 14:14
学习笔记
Unix高级环境编程中
apue
.h配置
对《unix高级环境编程》这本书就不多赘述,书中引用的"
apue
.h"配置我相信困扰很多人,今天我们就来配置一下
apue
.h。
I慕蓝
·
2018-03-19 22:29
apue.h
配置
APUE
读书笔记(一)
应老大要求,从今天开始
APUE
的读书笔记。其实就是一些比较需要注意的点第一章.UNIX基础知识一、登陆拿到一台Linux主机,最新开始的是登陆。
Ghost_02
·
2018-03-19 17:08
AUPE
深入解析条件变量(condition variables)
深入解析条件变量什么是条件变量(conditionvariables)引用
APUE
中的一句话:Conditionvariablesareanothersynchronizationmechanismavailabletothreads.Thesesynchronizationobjectsprovideaplaceforthreadstorendezvous.Whenusedwithmutexes
HarlanC
·
2018-03-18 17:00
APUE
读书笔记——高级进程通信(管道)
#include"
apue
.h"#include#defineDEF_PAGER"/bin/more"intmain(intargc,char*argv[])
DrawnBreak
·
2018-02-24 21:35
读书笔记
后端
APUE
读书笔记——线程同步(条件变量,屏障)
什么是同步?就是让线程之间按照一定的顺序去执行,例如线程A生产了一个物品,线程B才可以去执行消费。为什么不能直接用锁去做同步?例如设定锁X,锁Q线程B要消费一个物品,则对生产队列做检查(先对队列加锁保护),即对X加锁,若X已被锁,则阻塞。即加锁Q加锁X消费解锁Q当线程A生产了一个物品时,将锁X解锁,线程B唤醒,开始消费。即加锁Q生产解锁X解锁Q但是这有一个问题,如果线程A连续生产了很多物品,之后不
DrawnBreak
·
2018-02-24 14:31
读书笔记
后端
APUE
读书笔记——线程互斥(互斥量、读写锁)
一、简单的锁操作#include"
apue
.h"#include#includestructfoo{intf_count;pthread_mutex_tf_lock;intf_i
DrawnBreak
·
2018-02-23 22:05
读书笔记
后端
APUE
学习笔记——线程创建和退出
#include"
apue
.h"#includepthread_tntid;voidprintids(constchar*s){pid_tpid;pthread_ttid;pid=getpid();//
DrawnBreak
·
2018-02-23 20:58
读书笔记
后端
APUE
第八章习题
8-3代码#include"
apue
.h"intglobvar=6;/*externalvariableininitializeddata*/intmain(void){intvar;/*aut
DerekRay
·
2018-02-01 20:09
apue学习笔记
APUE
第八章习题
8-3代码#include"
apue
.h"intglobvar=6;/*externalvariableininitializeddata*/intmain(void){intvar;/*aut
DerekRay
·
2018-02-01 20:09
apue学习笔记
apue
第五章习题
5.1用setvbuf实现setbufvoidsetbuf(FILE*stream,char*buf);intsetvbuf(FILE*stream,char*buf,intmode,size_tsize);当buf为NULL,则为无缓冲,否则为全缓冲。voidmy_setbuf(FILE*restrictfp,char*restrictbuf){setvbuf(fp,buf,buf?_IOFBF
DerekRay
·
2018-01-24 16:34
apue学习笔记
APUE
之异步信号安全和线程安全
1.异步信号安全函数又被称为可重入函数,其定义源自单线程环境:如果一个函数可以在执行期间的任意时刻被中断,并且可以在中断服务程序中再次被安全调用,以及在中断退出后还可以继续正确执行完函数的剩下部分内容,就称该函数为可重入函数。1.1.常用的可重入函数主要可以分为以下几类:[1].所有套接字API,包括socket、connect、bind、accept、listen、select、pselect、
媳妇控
·
2018-01-21 19:12
Linux环境编程
[
APUE
] 文件 I/O 之 文件描述符
Unix世界里可以算得上一等居民了,所以有了如下这种说法:所有操作,都是基于对文件的操作也只有解了文件的基本知识才能揭开如今众多语言底层如何操作文件的这层面纱.代码Git地址SuzhenProjects/
Apue
Project
疯狂的攻城狮
·
2018-01-03 22:31
[
APUE
] ls 命令简单实现(C++/Golang)
前言ls命令使我们每天频繁的使用,ls可以轻松的列出这个一个目录下所有的文件和目录.我们现在就来实现一个最简单的目录命令ls.代码Git地址SuzhenProjects/
Apue
Projectls命令初探
疯狂的攻城狮
·
2018-01-03 15:12
stat结构体中的st_mode理解
apue
第四章4-12实例changemod.c#include"
apue
.h"intmain(void){structstatstatbuf;/*turnonset-group-IDandturnoffgroup-execute
DerekRay
·
2017-12-29 17:38
apue学习笔记
linux文件权限问题
除了rwx权限以外,还有s权限,这就是设置用户ID和设置组ID,它能让进程有效用户ID和有效组ID等于程序拥有者的uid和gid
apue
中的access.c,open函数以有效用户ID及有效用户组ID执行其访问权限测试
DerekRay
·
2017-12-28 17:09
apue学习笔记
APUE
学习小问题记录
4.21mkdir()#includeintmkdir(constchar*pathname,mode_tmode);所指定的文件访问权限mode有进程的文件模式闯将屏蔽字修改。即umask();mode_t用数字指定时应用八进制,前导0;umask(0);mkdir("CreatDir",0775);11.6.6条件变量“条件变量本身室友互斥量保护的。线程在改变条件状态之前必须先锁住互斥量。因为
Mnnk
·
2017-12-12 20:50
Linux
Unix:signal调用类成员函数 / Linux:signal调用类成员函数
这个问题早在使用signal时就碰到过,好不容易找到signal使用static型类成员函数的方法,但是发现不能传递参数,终究还是不行,直到在《
APUE
》上看到pthread和signal这一节,找到sigwait
程序心声
·
2017-12-05 02:28
Linux编程
APUE
之进程笔记(下)
1.进程组进程组是一个或多个进程的集合,同一进程中的各进程接收来自同一终端的各种信号。每个进程组都有一个组长进程,组长进程ID就是该进程组ID。只要进程组中有一个进程存在,该进程组就存在(跟组长进程是否提前终止无关)。/*API:pid_tgetpgrp(void)*描述:返回调用进程的进程组ID*//*API:pid_tgetpgid(pid_tpid)*描述:返回指定进程的进程组ID*@pid
媳妇控
·
2017-11-13 09:27
Linux环境编程
APUE
之信号
1.信号的本质信号是在软件层次上对中断机制的一种模拟,是IPC机制中唯一的异步通信机制.进程本身是无法直接处理信号的,而是必须事先将处理方式告诉内核,处理方式可以分为三种:[1].忽略此信号[2].捕捉信号。这种方式需要用户提供一个相应的信号处理函数[3].执行该信号的默认动作。默认动作主要有:忽略、终止、终止+core、继续需要注意的是,SIGKILL和SIGSTOP这2种信号既不能被忽略,也不
媳妇控
·
2017-10-24 19:25
Linux环境编程
APUE
第十四章.第十五章学习笔记
1.I/O多路转接/*********************************************包含头文件:#include函数原型:intselect(intmaxfdpl,fd_set*restrictreadfds,fd_set*restrictwritefds,fd_set*restrictexceptfds,structtimeval*restricttvptr);函数说明
RGBMarco
·
2017-10-24 12:06
APUE
APUE
第十二章学习笔记
1.线程属性/*****************************************包含头文件:#include函数原型:intpthread_attr_init(pthread_attr_t*attr);intpthread_attr_destroy(pthread_attr_t*attr);函数说明:pthread_attr_init初始化pthread_attr_t,初始化后pt
RGBMarco
·
2017-10-16 19:03
APUE
APUE
第十一章学习笔记
1.线程标识/*****************************************包含头文件:#include函数原型:intpthread_equal(pthread_ttid1,pthread_ttid2);函数说明:判断线程ID是否相等返回值:若相等,返回非0数值,否则,返回0*****************************************//********
RGBMarco
·
2017-10-11 12:21
APUE
apue
4.23 path_alloc未定义的引用问题
#include"
apue
.h"#inclu
wake_alone
·
2017-09-27 15:10
C语言
apue
APUE
第十章学习笔记
1.信号/*****************************************信号处理方式:(1):忽略此信号。(SIGKILL和SIGSTOP信号不能被忽略)(2):捕捉信号(3):执行系统默认动作*****************************************//*****************************************包含头文件#inc
RGBMarco
·
2017-09-25 22:52
APUE
APUE
第九章笔记
1.进程组/*********************************************************包含头文件:#include函数原型:pid_tgetpgrp(void);函数说明:同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.返回值:调用进程的进程组ID***************************************
RGBMarco
·
2017-09-21 14:46
APUE
APUE
第14章 高级I/O
第14章高级I/O非阻塞IO我们可以发出open,read,write这样的IO操作,并使它们永远不会阻塞,如果无法做到,则立即返回出错。两种方法获得非阻塞IO:1.open打开使指定O_NONBLOCK;2.对于一个已经打开的描述符,调用fcntl增加上述标志位。记录锁记录锁(recordlocking)的名称是一种误用,因为UNIX系统内核根本没有使用文件记录这种概念。更适合的术语是字节范围锁
有你可斯
·
2017-09-20 20:42
学习笔记
APUE
第13章 守护进程
第13章守护进程父进程ID为0的进程通常是内核进程,作为系统引导装入过程的一部分而启动。init是个例外,它是一个由内核在引导装入时启动的用户层次的命令。内核进程通常存在于系统的整个生命期内,以超级用户特权运行,无控制终端,无命令行。Linux使用kthreadd创建其他内核进程,所以它表现为其他内核进程的父进程。而用户层守护进程的父进程是init编程规则调用umask将文件模式创建屏蔽字设置为一
有你可斯
·
2017-09-20 20:51
学习笔记
APUE
第11-12章 线程和线程控制
第11章线程每个线程都包含表示执行环境必需的信息,包括线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程私有数据。一个进程的所有信息对该进程的所有线程是共享的,包括代码段、全局内存、堆、栈和文件描述符。线程ID不像进程ID,只在其进程上下文才有意义。进程ID用pid_t数据类型表示,线程ID用pthread_t数据类型表示,不一定是整型,可能是一个数据结构,所以可移植
有你可斯
·
2017-09-20 20:01
学习笔记
APUE
第6-9章
第6章系统数据文件和信息/etc/passwdgetpwuid(),getpwname()用于获取口令文件,返回一个passwd结构,该结构定义于”pwd.h”。获取之后应该立即使用,因为passwd结构通常是函数内部的静态变量,只要调用任一相关函数,内容会变。getpwent(),setpwent(),endpwent()。get返回口令文件的下一个记录,set定位到开头,end关闭。get之后
有你可斯
·
2017-09-20 20:38
学习笔记
APUE
第1-2章笔记
第1章UNIX基础知识每当运行一个新程序,所有的shell都为其打开3个文件描述符,stdin,stdout,stderr。如果不做特殊处理,这3个描述符都链接到终端。可以通过重定向到其他文件。signal用于通知进程发生了某种情况。3种处理方式:-忽略-系统默认-指定函数处理进程时间系统为进程维护了3个进程时间:-real,进程运行的时间总量-user,用户CPU时间,执行用户指令的时间-sys
有你可斯
·
2017-09-20 20:11
学习笔记
apue
中vfork()函数编译报错解决
编译vfork()的示例代码时,总是报错如下:ex_8_2.c:Infunction‘math’:ex_8_2.c:22:12:warning:implicitdeclarationoffunction‘vfork’[-Wimplicit-function-declaration]if((pid=vfork())头文件查找的默认路径),再对先前的示例代码进行编译,编译通过。
CurryXu
·
2017-09-20 19:44
c
linux内核
文件I/O、文件和目录学习总结
学习了
apue
的文件I/O和文件与目录两章,对于Unix的文件系统有了新的认识。记录如下。一.文件I/O对于内核而言,每个打开的文件都通过文件描述符fd来引用,fd是一个整数。
CurryXu
·
2017-09-18 16:58
c
linux内核
apue
习题4.6参考答案
#include"
apue
.h"#include"myerr.h"#include#includeintmain(intargc,char*argv[]){if(argc!
CurryXu
·
2017-09-15 11:07
c
linux内核
APUE
第八章学习笔记
/**********************************************************包含头文件:#include函数原型:pid_tgetpid(void);pid_tgetppid(void);uid_tgetuid(void);uid_tgeteuid(void);gid_tgetgid(void);gid_tgetegid(void);返回值:getpid:
RGBMarco
·
2017-09-13 21:55
APUE
FILE对象线程安全
根据
apue
讲述:标准的IO例程可能从它们各自的内部数据结构的角度出发,是以线程安全的方式实现的!但在线程中,如果标准IO例程都获取它们各自的锁,那么在做一次一个字符的IO时就会出现严重的性能下降!
ComingFlying
·
2017-09-12 20:30
c语言
APUE
第七章学习笔记
一:进程终止/*********************************************************退出函数:包含头文件:#include函数原型:voidexit(intstatus);void_Exit(intstatus);包含头文件:#include函数原型:void_exit(intstatus);函数说明:用于正常终止程序,_exit和_Exit立即进入内核
RGBMarco
·
2017-09-07 22:02
APUE
APUE
第六章学习笔记
一:口令文件的操作/*****************************************structpasswd成员:structpasswd{char*pw_name;//用户名char*pw_passwd;//加密口令uid_tpw_uid;//数值用户IDgid_tpw_gid;//数值组IDchar*pw_gecos;//注释字段char*pw_dir;//初始工作目录cha
RGBMarco
·
2017-09-05 13:57
APUE
APUE
读书笔记-第十五章-进程间通信
管道创建管道(pipe函数)#includeintpipe(intfd[2);fd[0]为读打开,fd[1]为写打开局限性(1)管道是半双工的,数据只能向一个方向流动(2)只能用于具有亲缘关系的进程之间(3)没有名字(4)管道的缓冲区是有限的,由常量PIPE_BUF定义(5)管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式管道实现进程同步的五个函数TELL_WAIT
qiao_yi_fan
·
2017-09-02 20:07
APUE
APUE
读书笔记-第十五章-进程间通信
管道创建管道(pipe函数)#includeintpipe(intfd[2);fd[0]为读打开,fd[1]为写打开局限性(1)管道是半双工的,数据只能向一个方向流动(2)只能用于具有亲缘关系的进程之间(3)没有名字(4)管道的缓冲区是有限的,由常量PIPE_BUF定义(5)管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式管道实现进程同步的五个函数TELL_WAIT
qiao_yi_fan
·
2017-09-02 20:07
APUE
APUE
读书笔记-第十四章-高级I/O
非阻塞I/O对低速设备的I/O操作可能会使进程永久阻塞,这类系统调用主要有如下情况:(1)如果数据并不存在,则读文件可能会使调用者永远阻塞(例如读管道、终端设备和网络设备)。(2)如果数据不能立即被接受,则写这些同样的文件也会使调用者永远阻塞;(3)在某些条件发生之前,打开文件会被阻塞(例如以只写方式打开一个FIFO,那么在没有其他进程已用读方式打开该FIFO时);(4)对已经加上强制性锁的文件进
qiao_yi_fan
·
2017-09-01 19:48
APUE
APUE
读书笔记-第十四章-高级I/O
非阻塞I/O对低速设备的I/O操作可能会使进程永久阻塞,这类系统调用主要有如下情况:(1)如果数据并不存在,则读文件可能会使调用者永远阻塞(例如读管道、终端设备和网络设备)。(2)如果数据不能立即被接受,则写这些同样的文件也会使调用者永远阻塞;(3)在某些条件发生之前,打开文件会被阻塞(例如以只写方式打开一个FIFO,那么在没有其他进程已用读方式打开该FIFO时);(4)对已经加上强制性锁的文件进
qiao_yi_fan
·
2017-09-01 19:48
APUE
APUE
读书笔记-第十三章-守护进程
用户层守护进程的父进程是init进程守护进程编写规则(1)umask将文件模式创建屏蔽字设置为一个已知值(通常为0)(2)调用fork,然后使父进程exit,保证了子进程不是一个进程组的组长进程(3)调用setsid创建一个新会话,由于该进程不是一个进程组的组长进程,会发生以下三件事(a)该进程变成新会话的会话首进程,此时,该进程时新会话中的唯一进程(b)该进程成为一个新进程组的组长进程,新进程组
qiao_yi_fan
·
2017-08-30 22:42
APUE
APUE
读书笔记-第十三章-守护进程
用户层守护进程的父进程是init进程守护进程编写规则(1)umask将文件模式创建屏蔽字设置为一个已知值(通常为0)(2)调用fork,然后使父进程exit,保证了子进程不是一个进程组的组长进程(3)调用setsid创建一个新会话,由于该进程不是一个进程组的组长进程,会发生以下三件事(a)该进程变成新会话的会话首进程,此时,该进程时新会话中的唯一进程(b)该进程成为一个新进程组的组长进程,新进程组
qiao_yi_fan
·
2017-08-30 22:42
APUE
APUE
读书笔记-第十二章-线程控制
初始化、销毁属性对象,每个属性都有从属性对象中获取属性值、设置属性值两个个函数实现线程分离的两种方法:(1)使用pthread_detach函数(2)修改pthread_attr_t结构中的detachstate属性(使用pthread_attr_setdetachstate函数),让线程一开始就处于分离状态线程分离后中无法获取该线程的终止状态,该线程退出时它所占的资源由操作系统回收如果调用pth
qiao_yi_fan
·
2017-08-30 21:00
APUE
APUE
读书笔记-第十二章-线程控制
初始化、销毁属性对象,每个属性都有从属性对象中获取属性值、设置属性值两个个函数实现线程分离的两种方法:(1)使用pthread_detach函数(2)修改pthread_attr_t结构中的detachstate属性(使用pthread_attr_setdetachstate函数),让线程一开始就处于分离状态线程分离后中无法获取该线程的终止状态,该线程退出时它所占的资源由操作系统回收如果调用pth
qiao_yi_fan
·
2017-08-30 21:00
APUE
APUE
读书笔记-第十一章-线程
新创建的线程可以访问进程的地址空间,并且继承调用线程的浮点环境和信号屏蔽字,但是该线程的挂起信号集会被清除新线程时调用pthread_self函数获取自己的线程ID,而不是从共享内存中读出,或者从线程的启动历程中以参数的形式接收到的,因为新线程可能在主线程调用pthread_create返回之前就运行了,那么新线程看到的是未初始化的ntid的内容单个线程可以通过3种方式退出简单地从启动例程中返回,
qiao_yi_fan
·
2017-08-29 20:26
APUE
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
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
其他