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
,对守护进程有了更加深刻的理解,特别是相应的编程规则和应用场景。对于为什么要fork两次,日志设施的用法,信号的处理方法都有了更加清晰的认识。
vonzhoufz
·
2014-09-24 19:00
sigaction
SIGHUP
pthread_sigmask
daemonize
学习《Unix环境高级编程》之问题
在学习《Unix环境高级编程》过程中,遇到一个问题,程序实例10-15,调用pr_mask()无法打印阻塞的信号,最后找到原因是
apue
.h中_XOPEN_SOURCE宏定义的问题,注释掉该宏的定义,即可运行正常
lanyang123456
·
2014-09-21 16:00
dup和dup2函数---复制文件描述符
相信大部分在Unix/Linux下编程的程序员手头上都有《Unix环境高级编程》(
APUE
)这本超级经典巨着。
lee244868149
·
2014-09-19 11:00
LINUX中断机制与信号
在学习
APUE
时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别
jiqiandong
·
2014-09-18 17:00
linux
通信
异步
内核
Mac OS X 10.8 中编译
APUE
(Unix环境高级编程)的源代码过程
最近在温习
APUE
(《unix环境高级编程》),以前都是在linux下搞,现在打算在自己机器弄下,于是google了下,把编译的事情搞定了,修改了一些教程的一些错误,比如下载链接之类的。
乡村运维
·
2014-09-17 09:18
C语言实现的ls命令源码分享
////ls.c//
apue
////Createdbychenqingon13-8-22.//Copyright(c)2013年chenqing.Allrightsreserved./
乡村运维
·
2014-09-17 09:13
李林
apue
之线程的封装
1.在头文件中定义变量,多文件引用,会在链接时出错,多次定义因为编译多个c文件,它们都会引用这个头文件,导致这个变量被重复定义了多次,所以会报链接错误,故一般不会将变量放在头文件中.而如果加上限定词const,就不会报错.而经常使用的预编译处理,只是防止一个编译单元中,某个头文件被重复包含的问题.2.如果主线程不休眠,它就有可能退出,这样在新线程有机会运行之前整个进程可能已经终止了.3.线程的入口
zy416548283
·
2014-09-16 22:00
unix环境高级编程编译方法 -
apue
最简单编译方法(第二版)
/********************************************************************************第0种-最简单实用********************************************************************************/.1.直接进入源码目录的lib目录cdlib2.执行mak
dfb198998
·
2014-09-16 19:00
getc与fgetc的区别
从
apue
上,我们学到,fgetc一定是函数,而getc可能由宏来实现(但不一定)。
stpeace
·
2014-09-14 19:00
UNIX环境高级编程学习环境搭建---
apue
.h
本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题。幸好网上有各种大神的解决办法让我最终解决了问题。在这里感谢为LINUX开源操作系统奋斗的大神。不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多。话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu14.04LTS)1.
光速跑者21
·
2014-09-14 13:10
linux
有“空洞”的文件的C代码实现
最近看
apue
,看到了空洞文件的介绍,颇为好奇,下面来学习一下。如果你不知道什么是空洞文件,请去学习
apue
.
stpeace
·
2014-09-11 00:00
apue
thread posix thread posix线程相关
pthread_tpthread_equalpthread_selfintpthread_create(pthread_t*tidp,constpthred_attr_t*attr,void*(*start_rtn)(void*),void*arg)thread退出:1startroutinereturn2另外一个线程终结cancel.intpthread_cancel(pthread_ttid)
阿欣
·
2014-09-10 17:47
服务器开发
apue
第六章 系统数据文件和信息(详细分析shadow的加密方法)
这章主要讲了存放密码相关的文件和组相关的文件以及编程获取此类信息相关的函数,和时间日期相关的函数。 1. /etc/passwd 和/etc/shadow文件 /etc/passwd 历史上用户信息和密码是存储在/etc/passwd中,但是这个文件任何用户都是可读不太安全,所以就把加密后的密码放到了/etc/shadow文件中,这个文件对其他人来说是没有任何权限的。 先回
zmnqazqaz
·
2014-09-09 23:00
c
操作系统
格式化
日历
【
APUE
学习笔记】dup和dup2用法
在了解dup用法之前,需要对linux的文件节点有一个认识。内核有3个数据结构来表示进程打开的文件,dup是系统提供的一个API可以直接操作这三个数据结构之间的关系。(1)每个进程在进程表当中都有一个记录项,记录项中包含一张表格,记录了所有当前进程打开的文件,可以将其想象成为一个key-value的映射关系,key为文件描述符fd,对于每个进程来说,fd从0开始向后排,value为指向文件表的一个
tuantuanls
·
2014-09-09 17:00
linux
dupdup2
apue学习笔记
apue
第五章 标准i/o库
在很多操作系统中,都实现标准I/O库,它由ISOC说明。 标准I/O库处理很多细节,例如缓存分配,以优化长度执行I/O等,用户不必担心如何选择正确的块长度。 标准I/O库的操作是围绕流stream进行的,相对于posixI/O是围绕文件描述符,当然在标准I/O库实现简单的理解是在此之上的封装,我们可以用fileno函数获得文件描述符。 标准的I/O文件流可用于单字节和多字节,这里
zmnqazqaz
·
2014-09-08 18:00
IO
APUE
学习之------------信号
在学习一个东西的时候我总是喜欢去问这样做的理由是什么?也喜欢去究竟他的历史。从中你可以发现所有的设计都在不断改进出来的,从来就没有一个设计是一开始就是完美的。好比是人,之初,性也许是善的,如果我们不通过后天的学习去让自己的心灵完美的话,他就只停留在了人的初级阶段了。 对于信号(signal)也是如此,硬件的中断中得出他的模型,然后不断的的去完善它。当一个事件发生时内核就会对该进
·
2014-09-08 11:00
学习
APUE
源码编译及问题解决
首先阅读readme文件,要求Tobuildthesource,edittheMake.defines.*fileforyoursystemandsetWKDIRtothepathnameofthetreecontainingthesourcecode. Thenjustrun"make".我的系统环境是Linux的,因此修改.linux的文件.将WDIR修改为源码所在的绝对文件路径.(最好是中文
hu1020935219
·
2014-09-08 09:00
apue
第四章
文件和目录这章,主要是围绕着一个结构体state展开的,我们先看一下这个结构里里面有什么内容structstat { dev_tst_dev;/*IDofdevicecontainingfile-文件所在设备的ID*/ ino_tst_ino;/*inodenumber-inode节点号*/ mode_tst_mode;/*filetype&mode[permission]*/ nlink
zmnqazqaz
·
2014-09-07 22:00
文件系统
APUE
第三章
又一次看完
APUE
第三章,有了新的收获,总结一下第三章。第三章讲的是POSIX的文件I/O,不带缓冲的I/O,相对于与第五章ISOC的标准I/O。
zmnqazqaz
·
2014-09-06 23:00
IO
APUE
学习笔记——10.18 system函数 与waitpid
原文链接:http://www.cnblogs.com/Windeal/p/4284644.htmlsystem函数system函数用方便在一个进程中执行命令行(一行shell命令)。用法如下:#include#includeintmain(){printf("Hello\n");system("sleep5");return0;}在程序中通过system调用了命令行sleep5。(这里知识举一个
L24986721
·
2014-09-04 10:00
APUE
学习笔记——10.18 system函数 与waitpid
system函数system函数用方便在一个进程中执行命令行(一行shell命令)。用法如下:#include #include intmain() { printf("Hello\n"); system("sleep5"); return0; } 在程序中通过system调用了命令行sleep5。(这里知识举一个例子,当然可以执行一个类似“bashtest.sh”之类的脚本在这个小程序的运行时
Windeal
·
2014-09-04 10:00
System
waitpid
apue
Unix环境高级编程
APUE
学习笔记——11 线程同步、互斥锁、自旋锁、条件变量
线程同步 同属于一个进程的不同线程是共享内存的,因而在执行过程中需要考虑数据的一致性。 假设:进程有一变量i=0,线程A执行i++,线程B执行i++,那么最终i的取值是多少呢?似乎一定是i=2;其实不然,如果没有考虑线程同步,i的取值可能是1.我们先考虑自加操作的过程:a,首先将内存中i的值copy到寄存器;b,对寄存器中i的copy进行自加;c,将寄存器中自加的结果返回到内存中。回到例子,如
Windeal
·
2014-09-04 10:00
线程
同步
Unix环境高级编程
自旋锁
APUE
学习笔记——11 线程基础
线程标识线程由线程号进行标识。线程号仅在线程所属的进程环境中有效。也就是说属于不同进程的两个线程可能线程号一样。线程标识用结构体pthread_ttid表示。与线程Id相关的函数如下:比较两个线程ID:#include intpthread_equal(pthread_ttid1,pthread_ttid2); Returns:nonzeroifequal,0otherwise获取自身线程ID:#
Windeal
·
2014-09-04 10:00
线程
tcpip
Unix环境高级编程
Unix 环境高级编程第三版 配置
apue
.h
http://www.
apue
book.com/ 下载
apue
.3e并解压sudoapt-getinstalllibbsd-dev(如果不安装此软件,make会报错)make3.将cp
apue
.3e/
TERRY2011111
·
2014-09-04 10:18
软件
include
APUE
学习笔记——10.15 sigsetjmp和siglongjmp
转载自:sigsetjmp用法如侵犯您的权益,请联系:
[email protected]
sigsetjmp用法分类: c/c++ linux2012-02-0312:33 1252人阅读 评论(0) 收藏 举报signal相关函数:longjmp,siglongjmp,setjmp 表头文件:#include 函数定义:intsigsetjmp(sigjmp_bufenv,intsavesigs)
Windeal
·
2014-09-03 15:00
linux
c/c++
Unix环境高级编程
sigsetjmp
siglongjmp
APUE
学习笔记——10.11~10.13 信号集、信号屏蔽字、未决信号
如有转载,请注明出处:Windeal专栏首先简述下几个概念的关系:我们通过信号集建立信号屏蔽字,使得信号发生阻塞,被阻塞的信号即未决信号。信号集:信号集:其实就是一系列的信号。用sigset_tset表示。数据类型:sigset_t 类似于整型(位数可能超过整型,因而不能用整型表示)。我们一般在sigprocmask()等函数中使用信号集,用于创建一系列进程要阻塞的信号,告诉内核不允许这些信号发生
Windeal
·
2014-09-03 13:00
信号
Unix环境高级编程
信号集
信号屏蔽字
APUE
学习总结
引言该文档由个人总结,一级标题的序号对应《
APUE
》第一版的各章,但是二级标题和该书无关,其序号和内容完全是根据个人判断和个人需求进行编写。
xueyingxue001
·
2014-09-03 10:00
apue
APUE
学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记kil和raisekill()用来向进程或进程组发送信号raise()用来向自身进程发送信号。#include intkill(pid_tpid,intsigno); intraise(intsigno); Bothreturn:0ifOK,−1onerrorkill向进程号为pid的进程发送signo信号可以看出下面两行代码是等价的:kill(getpid()
Windeal
·
2014-09-02 08:00
kill
信号
apue
Unix环境高级编程
APUE
学习笔记——10信号——信号接口函数 signal 和 sigaction
signal函数 signal函数是早起Unix系统的信号接口,早期系统中提供不可靠的信号机制。在后来的分支中,部分系统使用原来的不可靠机制定义signal函数,如 Solaris10。而更多的系统采用新语义可靠信号机制,如4.4BSD。 出于signal函数不同系统的不统一性,我们一般使用sigaction函数取代它。关于sigaction函数,我们在本文后面做详细介绍。函数原型:#inc
Windeal
·
2014-09-01 09:00
信号
Signal
apue
Unix环境高级编程
线程互斥锁的问题(线程中使用定时器信号)
前一天利用
apue
的一个程序来实现一个小功能,主要是一个线程一秒钟采集一次数据。我想到用定时器来实现结合alarm函数。
xygl2009
·
2014-08-31 16:00
线程
APUE
学习之---------------进程
离职了,交接期也有足够的时间了,可以在好好的再看一下
APUE
,想想上次详细的看还是在两年之前,虽然中间也偶尔会翻出来看看,但是由于工作上交集相对比较少一直没有去细读一下。
·
2014-08-30 10:00
学习
APUE
学习笔记——8.1-8.4 进程基础
进程ID1进程id是唯一的。(不会有进程id一样的两个进程)2进程id是可复用的,一个进程销毁后,它的id号可以被新的进程使用。但是Unix采用了延迟复用的算法,也就是进程 销毁后它的id不会立即被使用。3进程id为0的是调度进程。这是系统进程,是内核的一部分。4进程id为1的是init进程。init进程读取初始化文件/etc/rc*files或者/etc/inittab,以及在/etc/init
Windeal
·
2014-08-29 13:00
进程
fork
vfork
子进程
APUE
学习笔记——8.11 实际用户ID、有效用户ID、设置用户ID
用户ID的基本概念在Unix系统中,很多操作涉及到权限问题,这些权限涉及到用户ID和组ID的概念。 组ID和用户ID的原理和相关内容是类似的。下面介绍用户ID。 我们常见见到三种关于用户ID的概念。 实际用户ID:realuserID (RUID) 有效用户ID:effectiveuserID (EUID) 设置用户ID:savedset-userID (SUID)
Windeal
·
2014-08-29 09:00
算法
插入排序
C语言
循环不变式
APUE
学习笔记——7main()函数启动与退出
程序的启动与退出过程先上图,了解进程运行的机制。 内核首先调用exec,运行C启动进程,C启动进程会调用main()函数。 其他所有函数都是由main函数直接或间接调用的。 从Figure7.2可以看出,内核与用户进程的交互,直接使用的只有三个函数:exec、_exit、_Exit exec是用来启动C启动历程的,关于用户进程的退出,主要涉及以下三个函数: #include
Windeal
·
2014-08-28 15:00
main
exit
apue
Unix环境高级编程
atexit
APUE
学习笔记——6.10 时间与时间例程 time_t
Unix提供的最基本的时间服务室日历时间(纪元时间),也就是计算1970年1月1日0时0分0秒到当前的秒数。该秒数用time_t表示。typedeflongtime_t;/*时间值time_t为长整型的别名*/1、获取/设置时间1.1time和time_t函数time()可以用于获取当前日历时间#include time_ttime(time_t*calptr); Returns:valu
Windeal
·
2014-08-28 14:00
strftime
apue
time_t
Unix环境高级编程
localtime
APUE
学习笔记——6 系统数据文件与信息
1、用户口令:/etc/passwd文件该文件中包含下列结构体信息。其中,当下主修熊passwd不再这里显示,是使用了一个占位符。structpasswd { char*pw_name;/*用户名e,POSIX.1*/ char*pw_passwd;/*密码*/ uid_tpw_uid;/*数值化用户ID,POSIX.1*/ gid_tpw_gid;/*数值化组ID,POSIX.1*/ char*
Windeal
·
2014-08-28 10:00
用户口令
apue
Unix环境高级编程
阴影口令
APUE
学习笔记——10 信号
信号的基本概念 信号是软件中断,信号提供了解决异步时间的方法。 每一中信号都有一个名字,信号名以SIG开头。产生信号的几种方式 很多条件可以产生信号: 终端交互:用户按下某一些按键,如ctl+c,会产生信号。 硬件异常:如除数为0,内存引用错误。 kill(2)函数:将信号发送到一个进程或者进程组 kill(1)命令:该命令为kill(2)函数的接口。用于终止失控的后台in成
Windeal
·
2014-08-27 14:00
信号
APUE
学习笔记——5.5~5.7数据流的打开与读写
1.open#include FILE*fopen(constchar*restrictpathname,constchar*restricttype) FILE*freopen(constchar*restrictpathname,constchar*restricttype,FILE*restrictfp); FILE*fdopen(intfd,constchar*type); --Allth
Windeal
·
2014-08-25 14:00
流
fopen
fgets
fputs
行缓冲
APUE
学习笔记——5缓冲Buffering、流、文件对象
缓冲的几个基本概念 缓冲的作用:减少系统read和write的次数。全缓冲 系统标准I/O缓冲区被写满时才进行真正的I/O操作。 磁盘文件一般使用全缓冲 全缓冲使用malloc来分配缓冲区行缓冲 系统遇到换行符时进行真正的I/O操作。 Terminal一般使用行缓冲 行缓冲有固定的size,当这个固定size的行缓冲区被填满时,不管有没有遇到换行
Windeal
·
2014-08-25 10:00
buffer
缓冲
setbuf
全缓冲
行缓冲
Summer ending —— 仅此留给这两个逝去的夏天
听着OnePublic的《Countingstart》,右手边是刚买来的雪碧.Summerending...之前一直向往着能看懂LDD3,于是去看《Modernoperatingsystem》,《
APUE
u011368821
·
2014-08-25 00:00
Date
life
APUE
学习笔记——4.2结构体 struct stat 及其相关函数介绍
以下不少内容来自man手册结构体structstat 结构体structstat用于保存文件相关的所有信息。 structstat的基本成员如下所示 structstat{ dev_tst_dev;//文件所在设备的设备id,可以分解为主设备号和此设备号 ino_tst_ino;//inode号 mode_tst_mode;//文件的类型、存取权限等 n
Windeal
·
2014-08-21 11:00
stat
Unix环境高级编程
怎么样产生和捕获SUGUSR信号??
函数 // void(*signal(intsigno,void(*func)(int)))(int) //func的值可以是接到信号后调用的函数的地址 #include"
apue
.h"staticvoidsig_usr
lee244868149
·
2014-08-20 20:00
APUE
学习笔记——3.文件共享与fcntl介绍
基本概念内核使用3个数据结构描述一个打开的文件:进程表、文件表、V节点表首先了解3种数据结构的概念 1进程表 每一个进程有一个进程表。进程表里是一组打开的文件描述符,如标准输入0,标准输出1,标准错误2... 2文件表 进程打开一个文件时,内核就为该文件创建一个文件表。 进程表对文件表一般是一对多的关系 文件表对文件描述符也是一对多的关系(可能多个文件描述符指向同一
Windeal
·
2014-08-20 16:00
文件共享
apue
Unix环境高级编程
文件表
进程表
apue
学习:exit()和_exit()与return()的区别
unix下进程有5种正常终止方式: 1、在main函数内执行return。 2、调用exit函数/ 3、调用_exit或_Exit函数。 4、进程的最后一个线程在其启动例程中执行返回语句。 5、进程的最后一个线程调用pthread_exit函数。不管进程如何终止,最后都会执行内核中一段共同的代码。即相应进程关闭所有打开描述符,释放它所有的资源。 对于exit(intstatus)函数,其中的st
igiqoanw
·
2014-08-17 09:00
unix
列出目录中的所有文件
/
apue
.c注意:-Wall是为了显示所有的错误信息-g是为了在程序中加入用于gdb调试的信息-o是为了指定程序的名称test《UNIX环境高级编程》的程序清单1-1是列出一个目录中的所有文件下面是程序正文
nibzer
·
2014-08-10 23:00
c
unix
gdb
gcc
调试
APUE
读书笔记——文件和目录
一、stat、fstat、lstat函数#includeintstat(constchar*restrictpathname,structstat*restrictbuf);intfstat(intfiledes,structstat*buf);intlstat(constchar*restrictpathname,structstat*restrictbuf);返回值:成功返回0,出错-1返回文
xudongr
·
2014-08-06 21:35
APUE读书笔记
【Linux学习】pthread_create主线程与创建的新线程之间退出关系
#include "
apue
.h" #include pthread_t ntid;//线程ID void printids(const char *s) {
u012138828
·
2014-08-05 13:00
第八章 进程控制 exec函数
; char**ptr; externchar**environ; for(i=0;i char*env_init[]={"USER=unknown","PATH=/home/jiang/new_
apue
hai836045106
·
2014-08-04 16:00
UNIX环境高级编程
apue
.h头文件的配置
2012-10-2701:56:47| 分类: 配置|举报|字号 订阅初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download:http://www.
apue
book.com
u012138828
·
2014-08-04 11:00
linux记录锁(建议锁)的几个疑惑
在
APUE
中的第12节中提到了记录锁,按照文中提到的示例自己尝试运行了一遍,最后发现结果不是预期的:/************************************************
liuxingen
·
2014-08-02 21:00
记录锁
F_RDLCK
F_GETLK
F_SETLK
F_WRLCK
上一页
22
23
24
25
26
27
28
29
下一页
按字母分类:
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
其他