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
线程安全与可重入函数
可重入函数需要指明可重入对象,分为线程可重入函数和信号可重入函数线程可重入函数是可以被多个线程同时调用、且保证安全的函数,也叫做线程安全函数信号可重入函数是在信号处理程序中保证调用安全的函数,也叫做异步信号安全函数下图是
APUE
原野追逐
·
2019-09-13 16:00
[
apue
] FIFO:不是文件的文件
众所周知,FIFO中文译为命名管道,是PIPE的升级版。而PIPE是管道,系统提供的一种进程间通讯方式,FIFO与PIPE有以下方面不同:1)FIFO需要先在文件系统创建(mkfifo),之后使用文件接口操作(open/close/read/write);而PIPE不与文件系统相关联,创建PIPE后直接读写(pipe),无需打开;2)PIPE只能在父子关系的进程间使用,本质是通过fork复制了母进
goodcitizen
·
2019-07-23 10:00
APUE
札记
以
apue
第三版为蓝本我是目录第1章UNIX基础知识第2章UNIX标准及实现第3章文件IO第4章文件和目录第5章标准I/O库第6章系统数据文件和信息第7章进程环境第8章进程控制第9章进程关系第10章信号第
walker
·
2019-07-19 00:00
unix
vim
linux
c
守护进程构造原理及实现
守护进程详解守护进程的作用守护进程实例守护进程特性及构造原理守护进程特性进程、进程组、控制终端登陆会话之间的关系守护进程的构造原理(
APUE
中的创建步骤,实际操作中有些不同)调用umask将文件模式创建屏蔽字设置为一个已知值
我家云
·
2019-07-13 17:43
C++
gdb中常用的命令和用例讲解
总述gdb虽然只是一个调试器,但如何要用好它,必须深刻理解linux下程序是如何编译运行的,比较推荐的书有《CSAPP》(中文版名:深入理解计算机系统)和《
APUE
》(中文名:Unix环境高级编程)。
harriszh
·
2019-07-12 00:00
gdb
APUE
—UNIX文件系统
在linux系统中——一切都是文件。1.磁盘物理结构磁盘的物理结构如下:磁盘由很多盘面组成,而盘面上则是由很多同心圆环组成的磁道,每个磁道又被切割成许多扇区。所有磁盘面的同一个磁道构成一个柱面,同一柱面的所有磁道写完后,才会移入下一柱面。磁盘的最小组成单位可以看成扇区,每个扇区的大小逻辑上看起来是512字节,但实际上底层的物理扇区是4096字节,可以通过如下方式去得到:gqx@gqx-Lenovo
晓乎
·
2019-07-10 21:00
pthread_sigmask
给群里的.
apue
和man里都有的;对于线程信号,你应该忘记signal/sigaction,他们只为单进程单线程设计pthread_sigmask跟sigprocmask类似;sigprocmask只能用于单进程单线程
dashoumeixi
·
2019-07-09 03:28
pthread_sigmask
sigwait
unixc
帮别人写作业
[
apue
] 等待子进程的那些事儿
/
apue
.h"2#include34#defineCLD_NUM25staticvoidsig_cld(intsigno)6{7pid_tpid=0;8intstatus=0;9
goodcitizen
·
2019-07-08 15:00
[
apue
] 使用 popen/pclose 的一点疑问
当我们需要将输出作为标准输入传递给一个命令,或者将一个命令的输出作为标准输入来读取,一般会想到使用pipe与fork相结合的方式,来重定向标准输入/输出给指定命令。popen/pclose帮助我们简化了上述工作,只需要调用:FILE*fpout=popen("more","w");就可以将输出写入more命令。只需要调用:FILE*fpin=popen("ls-l.","r");就可以从输入读取l
goodcitizen
·
2019-06-21 09:00
[
apue
] 使用 poll 检测管道断开
一般使用poll检测socket或标准输入时,只要指定POLLIN标志位,就可以检测是否有数据到达,或者连接断开:1structpollfdfds[3];2fds[0].fd=STDIN_FILENO;3fds[0].events=POLLIN;4fds[1].fd=sock_fd;5fds[1].events=POLLIN;6fds[2].fd=pipe_fd;7fds[2].events=PO
goodcitizen
·
2019-06-12 09:00
[
apue
] dup2的正确打开方式
管道与重定向常常需要使用dup与dup2复制句柄,其中dup2又较为常用,但是使用dup2有几个小坑需要注意。intdup2(intoldfd,intnewfd);man手册页上是这样讲的,oldfd是想要复制的句柄,newfd是复制到的句柄号,如果newfd已经打开,dup2会先尝试关闭,复制完成后,oldfd与newfd都将指向同一文件实例。一般需要close(oldfd)来减少不必要的引用。
goodcitizen
·
2019-06-11 09:00
Unix高级环境编程(
APUE
)-----标准IO库
1、引言所谓的标准IO库其实就是ANSIC的标准库,标准IO库是在系统调用函数基础上构造的,便于用户使用。一般来说,标准IO可移植性更高,但是性能比系统IO差,而系统IO因为是内核直接提供的系统调用函数,所以性能更高,但是其因为和操作系统有关,所以可移植性更差。2、流和FILE对象化前面系统IO那部分时,所有IO函数针对的都是文件描述符,当打开一个文件时,即返回一个文件描述符,然后这个文件描述符用
吾之求索
·
2019-06-10 11:29
【APUE】
编译
APUE
源码
第二版参考:https://blog.csdn.net/freeking101/article/details/781847571.到www.
apue
book.com下载源码2.tar解包,cd
apue
dyzhen
·
2019-06-08 11:21
Linux开发
[
apue
] 测试管道容量的一些疑问
所谓管道的容量,指不消费(读)的情况下,最大能写入的数据量。有两种方式来测试一个管道的容量:1)使用阻塞写,每次写一个字节,并打印写入的总字节数,最后写入阻塞时,上次打印的就是管道的容量;2)使用非阻塞写,每次也只写一个字节,直到写入失败(返回-1),打印一次总的写入量,就是管道的容量。环境:CentOS6.7分别使用上述两种方法,测得管道容量:1)3112948字节(<3MB)2)8527860
goodcitizen
·
2019-06-05 17:00
Linux安装
apue
.3e以及运行第一个例子报错undefined reference to 'err_quit'
安装
apue
.3e下载编译要用到的源代码,AdvancedProgrammingintheUNIX®Environment,ThirdEditionsourcecode。
anlian523
·
2019-06-02 16:10
Linux
『
APUE
自学笔记』高级IO
非阻塞思考:读普通文件会阻塞吗?读普通文件时,如果读到了数据就成功返回,如果没有读到数据返回0,总之不会阻塞。思考:写文件时会阻塞吗?在写某些文件时,当文件不能立即接收写入的数据时,也可能会导致写操作阻塞,一直阻塞到写成功为止。如何实现非阻塞读?open()打开文件时指定O_NONBLOCK状态标志;通过fcntl函数指定O_NONBLOCK来实现;文件锁作用当多个进程同时读写一个文件时,为了不让
再也不玩网游了
·
2019-04-18 12:32
APUE自学笔记
『
APUE
自学笔记』进程间通信
IPC概述进程间实现数据共享容易吗?如果进程空间之间有可以共享的交叠空间的话,进程间可以通过这个交叠的空间,很容易的就能实现数据共享。但是实际情况是,每个进程的进程空间是完全独立的,进程空间没有任何的交叠,所以实现数据共享的难度很高。为什么进程空间是完全独立的?每个进程的虚拟地址范围虽然都是相同的(由0~2^32)但是各个进程通过内存映射机制,映射一段独立的物理内存。所以进程间互相独立。让每个进程
再也不玩网游了
·
2019-04-17 15:46
APUE自学笔记
『
APUE
自学笔记』线程
进程的缺点(1)进程间切换的计算机资源开销很大,切换效率非常低OS是通过虚拟内存机制来实现进程空间独立的,进程在并发运行时需要相互间的切换,切换时必然涉及虚拟内存机制的控制,但是虚拟内存机制比较复杂,所以在进行进程间切换时,会耗费CPU、cache、内存等计算机资源,也非常耗费切换时间。(2)进程间数据共享的开销很大当程序涉及多进程时,往往会涉及到进程间的通信,OS提供了各种各样的通信机制,由于进
再也不玩网游了
·
2019-04-13 11:10
APUE自学笔记
『
APUE
自学笔记』进程控制
三个特殊进程PID==0(调度进程)作用:实现进程间的调度和切换,该进程会让CPU轮换的执行所有的进程。OS启动起来后,最后有一部分代码会持续的运行,这个就是调度的进程。由于这个进程是OS的一部分,凡是由OS代码演变来的进程,都称之为系统进程。PID==1(init进程)作用1:初始化。他会去读取各种各样的系统文件,使用文件中的数据来初始化OS的启动。作用2:托管孤儿进程。作用3:作为所有进程的原
再也不玩网游了
·
2019-04-12 11:27
APUE自学笔记
『
APUE
自学笔记』进程环境
启动代码C程序运行时,最开始运行的是启动代码,启动代码再去调用main函数,然后整个C程序都已运行。由编译器提供的,一般有两种提供方式:①源码、②二进制(gcc采用这种)gcc-v[文件名]可以查看gcc编译链接的详细情况时,可以看到有很多*.o,这些.o文件就是gcc提供的启动代码。启动代码由汇编语言编写在程序的内存空间结构还没有布局起来之前,高级语言程序还无法运行,此时只能使用汇编,当利用汇编
再也不玩网游了
·
2019-04-11 14:53
APUE自学笔记
『
APUE
自学笔记』文件IO
注意!以下系统调用的具体使用方法可通过"man2open"命令查看使用手册。1.open()返回值如果打开成功,返回一个非负整数的文件描述符。如果打开失败,返回-1,并且设置错误号给系统定义的全局变量errno,用于标记函数到底出了什么错误。关于形参flags的O_CREAT、O_EXCL选项。(1)O_CREAT指定O_CREAT时,如果:文件存在:直接打开文件不存在:创建该文件。(2)O_EX
再也不玩网游了
·
2019-04-10 22:16
APUE自学笔记
APUE
笔记:基础socket编程
从下一个星期开始到今年结束,本人会因为研究生入学考试的备考停止做项目9个月,今后的博客将大多数以介绍学习经验为主,本次主要来分享一下基础的socketLinuxC程序编写经验。程序源码话不多说,先上源码:socket_client.c#include#include#include#include#include#include#include#include#include#include#de
Donald_Shallwing
·
2019-03-23 16:34
APUE
APUE
笔记:基础socket编程
从下一个星期开始到今年结束,本人会因为研究生入学考试的备考停止做项目9个月,今后的博客将大多数以介绍学习经验为主,本次主要来分享一下基础的socketLinuxC程序编写经验。程序源码话不多说,先上源码:socket_client.c#include#include#include#include#include#include#include#include#include#include#de
Donald_Shallwing
·
2019-03-23 16:34
APUE
bio与nio
bio哪些操作会阻塞而nio如何优化-bio阻塞:(
apue
P38814.2)如果某些类型文件(读管道、终端设备和网络设备)的数据不存在,则读操作可能会使调用者永远阻塞(可能读的时候,网络数据还没有到来
Duncan_dsf
·
2019-03-13 10:49
io
bio与nio
bio哪些操作会阻塞而nio如何优化-bio阻塞:(
apue
P38814.2)如果某些类型文件(读管道、终端设备和网络设备)的数据不存在,则读操作可能会使调用者永远阻塞(可能读的时候,网络数据还没有到来
Duncan_dsf
·
2019-03-13 10:49
io
SUID的应用场景和简单见解
前言在看到
apue
的进程的时候,我发现一个叫suid的概念,也就是"设置用户ID"。
imxyb
·
2019-01-13 16:46
APUE
学习笔记(第十三章:守护进程)
概念:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。(这里的结尾字母d就是Daemon的意思)守护进程的创建
askunix_hjh
·
2018-12-29 16:23
守护进程
APUE
——《读书笔记系列》——
#
《APUE
·
第3版》
APUE
第一章笔记
家目录从哪里获取当我们登录到linux中后,【家目录】是当前的工作目录。家目录的位置从【/etc/passwd】中的字段中取得。非缓冲I/O相关函数【unistd.h】中包含了【非缓冲I/O】操作函数open、read、write、lseek与close函数的原型。这些函数通过使用【filedescriptor】完成工作。对于read、write而言,它们面向的是【字符流】,通过读写指定的buff
longyu_wlz
·
2018-12-27 20:08
APUE
UE4的Film ACES Tonemap移植到unity中
位置unity端位于Colors.hlslAcesTonem
apUE
4端位于TonemapCommon.hlslFilmToneMapACES颜色空间ACES2065-1ACEScgACESccConvertingACES2065
gqkly
·
2018-12-04 23:07
postprocess
APUE
系列·Mac下环境配置
心中的执念太多、乘着年轻,我想去一一实现。也许不为目的,就是为了实现当初给自己吹的牛逼。优秀的人那么多,为什么我不是其中一个?付出完全匹配不上野心,可否知道该如何去做?自律是一件可怕的事,因为那意味着战胜了自己的惰性。看见一个榜样、我觉得你将是我追逐的目标。-----开篇前言开始学习《UNIX环境高级编程》。按照之前对这本书的理解,这本书是一个介绍UNIX内核API的书,在介绍UNIXAPI的同时
一条肥鱼
·
2018-11-26 22:12
UNIX环境高级编程
APUE
文件和目录
文件和目录Unix所有的文件都对应一个structstat,包含了一个文件所有的信息。#includestructstat{mode_tst_mode;//文件类型和用户访问权限ino_tst_ino;//inode号dev_tst_dev;//文件系统设备号dev_tst_rdev;//特殊文件设备号nlink_tst_nlink;//链接(引用)计数,这个指对inode的链接数uid_tst_
小胖西瓜
·
2018-11-10 14:00
APUE
文件IO
文件IO记录书中的重要知识和思考实践部分Unix每个文件都对应一个文件描述符(filedescriptor),为一个非负整数,一个文件可以有多个fd,后面所有与文件(设备,套接字等)有关操作都是围绕这个fd来的。在shell中intopen(constchar*path,intflags,.../*mode_tmode*/);intopenat(intfd,constchar*path,intfl
小胖西瓜
·
2018-10-31 16:00
APUE
第8章 进程控制
1、概述UNIX系统控制包括创建新的进程、执行程序和进程终止。本章还将讲明进程属性的各种ID——实际、有效和保存的用户ID和组ID,以及它们如何受到进程控制原语的影响。2、进程标识利用进程号标识进程ID。PID号虽唯一,但可复用。系统中有一些专用进程,具体细节随实现而不同。ID为0的进程通常是调度进程,即交换进程,该进程是内核的一部分,并不执行任何磁盘上的程序,因而也被称为系统进程。ID为1通常是
TT_love9527
·
2018-10-14 23:56
apue
套接字,IPC
主要是记录
apue
里面的一些概念网络IPC,unix域套接字(也就是本机IPC的一种实现)附件demo:https://pan.baidu.com/s/1CdWYyUSiNEqP9x4ffkXviw需要编译
laidian
·
2018-10-07 12:27
APUE
第5章 标准I/O库
1、概述标准I/O库处理很多细节,如缓冲区分配、以优化的块长度执行I/O等。这些处理使用户不必担心如何选择使用正确的长度。本章深入了解I/O库函数的操作。2、流和FILE对象对于所有I/O函数(见第3章)都围绕文件描述符的。当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的I/O操作。对于标准I/O库,其操作是围绕流进行的。当用标准I/O库打开或创建一个文件时,已使一个流与一个文
TT_love9527
·
2018-10-01 21:18
apue
APUE
线程
十一章线程多线程可以实现在某一个时刻能够做不止一件事,每个线程处理各自独立的任务好处如下通过为每种事件类型分配不单独的处理线程,可以简化处理异步事件代码多线程可以共享存储地址空间和文件描述符有些问题可以分解从而提高整个程序的吞吐量交互的程序可以使用多线程来改善响应时间。多线程在执行串行化任务时会阻塞每个线程包含有表示执行环节所必须的信息,其中包括进程中标识线程的线程ID一组寄存器值,栈,调度优先级
m风满楼
·
2018-09-29 17:54
(未完成)
APUE
知识点记录 【二】文件和目录
1.函数stat,fstat,fstatat,lstat#include//成功返回0,失败返回-1.intstat(constchar*restrictpathname,structstat*restrictbuf);intfstat(intfd,structstat*buf);intlstat(constchar*restrictpathname,structstat*restrictbuf)
RaKiRaKiRa
·
2018-09-26 20:20
APUE学习笔记
APUE
2错误记录
在14年5月份的时候,看
APUE
2的信号处理章节,看到“10.10alarm和pause函数”的时候,其中有一个例子是“超时功能的read函数”;我当时试了试这个代码,但是发现,并没有超时功能,并且在chinaunix
cainiaohhf
·
2018-09-26 14:46
错误锦集
学习
成长
感悟
APUE
笔记-进程环境
进程环境进程的内核空间映射到同一块物理地址。进程只能读写用户空间。用户空间映射到不同的物理地址,进程只能读写自己的用户空间。PCB在内核空间,操作系统按照页管理内存。每个页可以设置读写访问权限。参考MMU的设置代码。Linux只用了两个特权级别。(Intel的CPU4个特权级)ISOC规定一个进程可以登记最多32个函数,这些函数由exit自动调用atexit(stdlib.h)函数用来登记这些函数
wllinux12138
·
2018-09-06 20:51
C语言
UNIX环境高级编程
APUE
笔记-文件IO
文件IO打开文件#includeopenopenat:fd是打开的目录的文件描述符,所以可以写相对路径掌握:O_RDONLY、O_WRONLY、O_RDWR、O_APPEND、O_CREAT、O_EXCL:和O_CREAT一起用,测试文件是否存在,存在则出错,否则创建,使得测试和创建成为原子操作。实验:第一次执行,创建了hello文件,第二次执行打印:no:Fileexists1#include2
wllinux12138
·
2018-08-16 21:41
UNIX环境高级编程
Swoole 源码分析——锁与信号量模块
APUE
学习笔记——线程与锁
APUE
学习笔记——高级IO与文件锁数据结构swoole中无论哪种锁,其数据结构都是swLock,这个数据结构内部有一个联
leoyang90
·
2018-08-12 00:00
lock
c
php
swoole
apue
.h找不到的解决方案
1.介绍AdvancedProgrammingintheUNIXEnvironment_ThirdEdition(简称
APUE
)是Stevens编写的unix编程圣经,书上的代码为了保持简洁性,头文件以及必要的声明都定义在了头文件
Tailor_Wu
·
2018-08-03 10:31
常见编程错误解决方案
APUE
之mmap机制
mmap(memery-mappedI/O)可以将一个文件或其他对象(比如一段匿名内存)映射到进程的虚拟地址空间。mmap技术的用途主要有以下两个方面:[1].将一个文件映射到进程的虚拟地址空间后,进程就可以直接访问这段虚拟地址来进行文件的I/O操作,而不再需要使用read、write等系统调用[2].多个进程可以通过映射同一个文件实现共享内存,来作为进程间的一种IPC方式mmap接口格式:voi
媳妇控
·
2018-07-31 08:31
Linux环境编程
创建一个从父进程到子进程的管道,并且父进程经由该管道向子进程传送数据
#include"
apue
.h"intmain(void){intn;intfd[2];pid_tpid;charline[MAXLINE];if(pipe(fd)0){close(fd[0]);write
danwuxie
·
2018-07-07 08:09
APUE
之记录锁
记录锁提供的功能:当第一个进程正在访问文件的某个部分时,使用记录锁可以限制其他进程访问同一文件区的行为这里需要注意一点,记录锁支持锁定文件的一个区域(当然也可以是整个文件)fcntl记录锁接口格式:intfcntl(intfd,intcmd,structflock*flockptr)@fd-要设置记录锁的文件描述符@cmd-对于记录锁,可以取F_GETLK、F_SETLK、F_SETLKW,含义分
媳妇控
·
2018-06-25 19:31
Linux环境编程
mac gcc编译头文件找不到解决方案
将
apue
.h和error.c文件全部放到/usr/include里也可以用sudomv
apue
.h/usr/incl
zzuli-dk
·
2018-06-04 17:42
linux
APUE
学习(二)IO
1.中规定了文件标识符://头文件多在/usr/include/下*Standardfiledescriptors.*/#defineSTDIN_FILENO0/*Standardinput.*/#defineSTDOUT_FILENO1/*Standardoutput.*/#defineSTDERR_FILENO2/*Standarderroroutput.*/2.open#includeint
sunbo94
·
2018-05-03 21:03
linux
centos下配置编译
apue
.h、unp.h
apue
.3e下载地址:http://www.
apue
book.com/code3e.html1、先将该文件src.3e.tar.gz下载2、获得root权限,解压源码至指定位置:tar-zxv-fsrc
博弈Dream
·
2018-05-01 18:16
APUE
(七) :进程环境
七.进程环境atexit函数:函数atexit登记终止处理程序(函数),一个进程最多可以登记32个终止处理函数,这些函数由exit自动调用(return语句也可以调用),即在程序结束时调用。#includeintatexit(void(*func)(void));环境表:每个程序都会接受到一张环境表。环境表是一个字符指针数组。全局变量environ包含了该指针数组的地址:externchar**e
amoscykl
·
2018-04-27 01:48
网络编程
APUE
学习笔记 第十章 信号
第十章信号信号是软件中断,它提供了一种处理异步事件的方法。本章对信号机制进行综述,并说明每种信号的一般用法。1、信号概念每个信号都有一个名字,这些名字都以3个字符SIG开头。在头文件中,信号名都被定义为正整形常量。1.1产生信号的条件:(1)当用户按某写终端按键时,引发终端产生的信号。如:Ctrl+C产生SIGINT信号。(2)硬件异常产生信号。如除零错,无效的内存应用产生SIGSEGV信号。(3
xuri8888
·
2018-04-26 16:32
LINUX
APUE学习笔记
APUE学习笔记
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
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
其他