自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Escaping

一只R&D社畜,兴趣驱动,学习、分享、沉淀。 筚路蓝缕,以启山林。

  • 博客(24)
  • 收藏
  • 关注

原创 APUE第13章 守护进程Deameon

守护进程守护进程daemon是一种生存周期很长的进程。它们通常在系统引导时启动,在系统关闭时终止。守护进程是没有终端的,它们一直在后台运行。守护进程的特征在Linux系统中,可以通过命令 ps -efj 来查看守护进程。例如下图:image.png从上图中可以看到 TTY 一列,该列显示每个进程的终端,对于问号(?)显示的进程,表明该进程没有控制终端。而CM...

2020-02-23 19:16:54 158

原创 APUE第12章 线程属性设置

线程属性12.3 线程属性pthread 接口允许我们通过设置每个对象关联的不同属性来细调线 程和同步对象的行为。通常,管理这些属性的函数都遵循相同的模式。(1)每个对象与它自己类型的属性对象进行关联(线程与线程属性关联,互斥量与互斥量属性关联,等等)。一个属性对象可以代表多 个属性。属性对象对应用程序来说是不透明的。这意味着应用程序并不 需要了解有关属性对象内部结构的详细...

2020-02-23 19:08:25 171

原创 APUE第11章 线程

10.1 引言pthread在前面的章节中讨论了进程,学习了UNIX进程的环境、进程间的 关系以及控制进程的不同方式。可以看到在相关的进程间可以存在一定 的共享。本章将进一步深入理解进程,了解如何使用多个控制线程(或者简 单地说就是线程)在单进程环境中执行多个任务。一个进程中的所有线 程都可以访问该进程的组成部件,如文件描述符和内存。不管在什么情况下,只要单个资...

2020-02-23 17:37:32 163

原创 APUE第10章 信号

第10章 信号signal10.1 引言信号是软件中断。很多比较重要的应用程序都需处理信号。信号提 供了一种处理异步事件的方法,例如,终端用户键入中断键,会通过信 号机制停止一个程序,或及早终止管道中的下一个程序。UNIX系统的早期版本就已经提供信号机制,但是这些系统(如 V7)所提供的信号模型并不可靠。信号可能丢失,而且在执行临界区代 码时,进程很难关闭所选择...

2020-02-21 11:23:59 259

原创 [c/c++] 7.signal函数

函数signalUNIX系统信号机制最简单的接口是signal函数。#include <signal.h> void (*signal(int signo, void (*func)(int)))(int);返回值:若成功,返回以前的信号处理配置;若出错,返回SIG_ERRsignal函数由ISO C定义。因为ISO C不涉及多进程、进程组以及终 端I...

2020-02-21 01:19:53 285

原创 APUE第9章 进程关系、进程组、会话

9 进程关系image.pngimage.png在第8章学习了进程的控制原语,通过各种进程原语可以对进程进行控制,包括新建进程、执行新程序、终止进程等。在使用fork( )产生新进程后,就出现了进程父子进程的概念,这是进程间的关系。本章更加详细地说明进程间的关系,包括:进程组、会话、作业等。9.1 终端登录当我们通过硬件终端而非网络终端登录到系统时...

2020-02-20 01:37:46 159

原创 APUE第8章 进程控制

8.1 引言在理解线程之前,首先需要了解UNIX/Linux进程。 进程是由操作系统创建的,需要相当数量的“开销”。 进程包含有关程序资源和程序执行状态的信息,包括:它是一个在随机访问内存(RAM)中,正在执行的程序,它是资源分配的最小单位。image.pngpcb内容:1)进程ID,进程组ID,用户ID和组ID2)环境3)工作目录4)程序说明5)寄存器...

2020-02-20 01:17:56 235

原创 [c/c++]6. exec函数

execimage.png曾提及用fork函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用磁盘 上的一个新程序替换了当前进程的正文段、数据段、堆段和栈段。有7种不同的e...

2020-02-20 00:38:08 3189

原创 [c/c++]5.wait、waitpid、waitid,wait3、4 exit和,孤儿、僵尸进程

1.函数exitimage.png进程有5种正常终止及3种异常终止方式。5种正常终 止方式具体如下。(1)在main函数内执行return语句。如在7.3节中所述,这等效于调 用exit。(2)调用exit函数。此函数由ISO C定义,其操作包括调用各终止 处理程序(终止处理程序在调用atexit函数时登记),然后关闭所有标准 I/O流等。因为ISO C并不处...

2020-02-20 00:04:55 2017 1

原创 [c/c++]4.fork、vfork、clone和写时拷贝(copy on write)技术

进程创建进程创建首先说明Linux下的进程与线程比较相近。这么说的一个原因是它们都需要相同的数据结构来表示,即task_struct。区别在于一个有独立的用户空间,一个是共享的用户空间(如果完全没有用户空间则是内核线程,不需要)。Linux的用户进程不能直接被创建出来,因为不存在这样的API。它只能从某个进程中复制出来,再通过exec这样的API来切换到实际想要运...

2020-02-16 07:59:01 468

原创 APUE第7章 进程环境

7.1引言image.png将介绍进程控制原语,在此之前需先了解进程的环境。本章 中将学习:当程序执行时,其main函数是如何被调用的;命令行参数是 如何传递给新程序的;典型的存储空间布局是什么样式;如何分配另外 的存储空间;进程如何使用环境变量;进程的各种不同终止方式等。另 外,还将说明longjmp和setjmp函数以及它们与栈的交互作用。本章结束 之前,还将查...

2020-02-15 23:36:55 135

原创 [c/c++]3.如何查看和更改程序运行栈的大小

进程内存布局image.png我们写程序运行栈的栈帧保存在栈区,函数调用深度太多将导致爆栈栈的大小有上限,每个进程可以指定软上限,操作系统可指定硬上限linux查看栈上限方法linux可以通过ulimit命令查看栈上限和设置上限ulimit -a 查看进程所有资源上限ulimit -s xx 修改栈上限也可以通过程序中调用函数修改每个进程都有一...

2020-02-15 23:36:15 3732

原创 [c/c++]2.malloc、calloc、realloc

储存空间动态分配image.pngISO C说明了3个用于存储空间动态分配的函数。(1)malloc,分配指定字节数的存储区。此存储区中的初始值不确 定。(2)calloc,为指定数量指定长度的对象分配存储空间。该空间中 的每一位(bit)都初始化为0。(3)realloc,增加或减少以前分配区的长度。当增加长度时,可能 需将以前分配区的内容移到另一个足够大...

2020-02-15 10:26:05 238

原创 [c/c++]1.内存储存空间布局

历史沿袭至今,C程序一直由下列几部分组成:内存布局image.png代码段:程序的所有指令会存放在这个区域,这是已经编译后的机器码。这是由CPU执行的机器指令部分。通常,正文段是可共 享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell 等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防 止程序由于意外而修改其指令。字面量池是程...

2020-02-15 09:36:12 149

原创 yaml-cpp:c++ 开发中利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。如果有 Python...

2020-02-13 00:36:57 1388

原创 Makefile简单入门

最近工作编译程序一直在用别人写的Makefile,但是没有系统的学习过,趁着放假学一波makefile0x00 Makefile 概述一个企业级项目,通常会有很多源文件,有时也会按功能、类型、模块分门别类的放在不同的目录中,有时候也会在一个目录里存放了多个程序的源代码。这时,如何对这些代码的编译就成了个问题。Makefile 就是为这个问题而生的,它定义了一套...

2020-02-10 04:17:55 160

原创 gcc参数详解

gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:1、预处理,生成 .i 的文件[预处理器cpp]2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]4、连接目标代码, 生成可执行程序 [链接器ld]过程如下:...

2020-02-10 03:19:32 308

原创 linux系统信息读取小程序

获取内核版本、架构、用户名、终端、目录image.png/* * @Author: machineplay * @Date: 2020-02-05 03:04:30 * @Description: only for fun */#include <iostream>#include <stdio.h>#include <...

2020-02-05 05:42:50 110

原创 本地项目在github和coding上同步

用过一段时间的github,一直挺顺畅,突然用上了coding,略不适应,因此把coding和github上的远程仓库统一同步.image.png之前设置过SSH key,其值放在目录/.ssh/id_rsa.pub中,注意不是id_rsa,把id_rsa.pub文件中的ssh值放入此时已经在github和coding中已经设置好了SSH,用git remote...

2020-02-05 00:07:30 237

原创 计算可由time_t数据类型表示的最近时间。如果超出了这一时间将会如何?

计算可由time_t数据类型表示的最近时间。如果超出了这一时间将会如何?C++11标准规定long类型最少占32位,在我的计算机上,系统使用long int来实现time_t,实际使用64位来表示long类型,因此其取值值范围为 -9223372036854775808~9223372036854775807,由于该值特别大,2900亿年后才会溢出,此时宇宙可能都不存在了。对于某...

2020-02-04 22:45:42 511

原创 如果系统使用阴影文件,那么如何取得加密口令?

如果系统使用阴影文件,那么如何取得加密口令?无法获取,因为shadow文件只允许root用户访问,普通用户无法取得。假设你有超级用户权限,并且系统使用了阴影口令,重新考虑上一道习题。#include <iostream>#include <shadow.h>int main (int argc, char *argv[]){ string ...

2020-02-04 22:34:37 222

原创 APUE第6章 系统数据文件和信息

6.1 引言UNIX系统的正常运作需要使用大量与系统有关的数据文件,例 如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁 使用的两个文件。用户每次登录UNIX系统,以及每次执行ls -l命令时都 要使用口令文件。由于历史原因,这些数据文件都是ASCII文本文件,并且使用标准 I/O库读这些文件。但是,对于较大的系统,顺序扫描口令文件很花费 时...

2020-02-04 22:30:32 250

原创 c时间函数strftime、struct timespec 和 struct timeval

时间和日期由UNIX内核提供的基本时间服务是计算自协调世界时(Coordinated Universal Time,UTC)公元1970年1月1日00:00:00这一特定 时间以来经过的秒数。1.10节中曾提及这种秒数是以数据类型time_t表示 的,我们称它们为日历时间。日历时间包括时间和日期。UNIX在这方 面与其他操作系统的区别是:(a)以协调统一时间而非本地时间计 时;(...

2020-02-04 22:19:55 1364

原创 Linux读取系统信息

系统标识POSIX.1定义了uname函数,它返回与主机和操作系统有关的信息。#include <sys/utsname.h>int uname(struct utsname *name);返回值:若成功,返回非负值;若出错,返回-1 通过该函数的参数向其传递一个 utsname 结构的地址,然后该函数填写此结构。POSIX.1只定义了该结构中最少需提供的字...

2020-02-03 04:05:24 198

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除