自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

My Coding Life

个人博客:jmyblog.top

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

原创 linux:作业控制&作业规划进程crond

ForeWord 本文介绍了作业控制的相关命令,并调研了作业规划进程crond及crontab命令。KeyPoint:与作业控制有关的命令及其对应信号(Code)作业规划进程crond&crontab ...tips:全文阅读需很长时间。。。(嗯,就是这样,没毛病)...Job Control 1. Concept“Shell可以同时运行⼀个前台进程和任意多个后台进程”这种说法其实

2017-06-30 10:53:29 686

原创 linux:守护进程&模拟实现mydaemon

ForeWord 本文介绍了守护进程的概念及其模拟实现Key Point:守护进程(Daemon)概念模拟实现守护进程(Code): 调用函数模拟实现mydaemon 调用系统接口实现~tips:全文阅读需要5min~Daemon 守护进程(精灵进程( Daemon)):一种没有控制终端的linux系统服务进程,父进程为pid为1的init进程,随系统启动。不能直接和用户交互,不受

2017-06-29 18:16:48 817 1

原创 linux:终端(Terminal)基本概念&终端登录过程详解

ForeWord 本文主要介绍了终端的基本概念和终端在系统中登录的过程。Key Point:基本概念及访问终端的方法(Code)终端登录过程详解……Expand - Knowledge……1.处理终端设备的模块:硬件驱动程序&线路规程(Line Discipline)2.linux启动级别~tips:全文阅读需要3min~Terminal 在UNIX/LINUX系统中,用户通过

2017-06-29 10:16:21 14574 4

原创 linux:进程组&作业&会话—concept&distinction&contact

Foreword 本文介绍了linux中进程组、作业、会话的基本概念,并分别对其进行代码举例分析。主要内容有:3者基本概念3者间的区别与联系tips:全文阅读需要5minConcept NO.1 进程组(Process Group)事实上,每个进程除了有一个进程ID(pid)之外,还属于一个进程组。进程组是一个或多个进程的集合,每个进程组有一个唯一的进程组ID(pgid)。此外

2017-06-27 16:46:39 1037 2

原创 使用gdb调试多进程与多线程程序

高能预警本文主要介绍了如何使用linux环境下的代码调试工具—gdb来调试多进程与多线程程序,主要内容有:1. 问题引入2. 调试方法介绍及代码实例3. gdb常用命令总结4. 一些大神们关于此主题的介绍并附链接——>全篇阅读(不包括链接)大概需要8min读完本文后,你可以用简单的方法调试多线程多进程程序。对几种调试方法也会有一种宏观认识。问题引入先

2017-06-18 11:22:46 741 1

原创 C语言实现小游戏——三子棋(Three Peices Chess)

前言相信不少小伙伴都玩过五子棋,其实三子棋和它的游戏规则一样,谁在行/列/对角线上连成直线,谁就获得胜利。接下来用C语言实现它Code and Explain首先为了方便代码编写,实现系统试编程。在工程里定义3个文件:其中,tpc.h是用来存放宏定义和函数声明的头文件tpc.c是头文件中声明函数的具体实现test.c则是用来测试代码的源文件。下面给出各个模块的代码并解释:首先,tcp.h:#ifnd

2017-06-17 20:23:45 709 2

原创 C语言应用题——如何确定跳水排名

问题描述问题是这样的:思考首先,某人比赛的名次一定可能是1-5中的任意一个。所以得用5个for循环来实现。其次,这5个人的话都不是只关于自己,而且还有关于别人的。所以上边的5个for循环一定不能是各自独立的。他们得相互嵌套起来,形成约束。最后,每个人的话都只说对了一半,所以可以用if语句来判断。这样,我们就可以写出代码了。Code (v1.0)#define _CRT_SECURE_NO_WARNI

2017-06-17 18:59:05 725

原创 C语言——确定某数比特位中1的个数并打印其32位比特数值

思想其实也谈不上什么思想,这个题目相对还是简单的。首先,你得知道怎么判断某位是不是1,这个用模2就可以解决,比如:其它数字也是如此,因此就可以得出结论:模2为0的,其最低位就是0.反之为1接下来就是要判断所有比特位的数值了,这个可以用右移操作来实现,直观地说就是不断除2,这样使得要判断的每一个比特位最终都移到最后一位,再用上边的办法判断即可。最后再加上count计数器,就可以轻松实现1个数的统计了。

2017-06-17 18:33:21 5161

原创 C语言应用题——谁是凶手?

Question问题描述如下:为啥是日本呢,真的不是有意的,我发四。。。Solution解决办法很简单,只要判断条件就好了,代码如下:#include<stdio.h>#include<Windows.h>int main(){ int killer = 'A';//用ASCII码直接转换,A,B,C,D的数值是相连的 for (; killer <= 'D'; killer++

2017-06-17 18:06:46 2015

原创 C语言实现9-9乘法表

前言9-9乘法表是小学数学老师教给我们的,现在想起来还有满满的回忆呢。。现在可以用代码实现,不知道数学老师看到了会是什么反应……Code话不多说,直接上代码:#include<iostream>#include<Windows.h>using namespace std;int main(){ for (int i = 1; i < 10; ++i) { for

2017-06-17 17:58:52 941

原创 linux信号系列文终结篇:信号的捕捉(含mysleep的实现)

高能预警本文主要介绍了信号捕捉的概念和方法,并用相关函数实现了与系统sleep函数功能类似的mysleep程序。本文主要内容有:1.信号捕捉的概念及其在内核中的实现机制2.信号捕捉相关函数介绍3.mysleep的实现(1.0版)拓展知识: 竞态条件(mysleep 2.0版)————>全文阅读大概需要8min(我真的发四)<——信号捕捉本系列文第一篇和第二篇中都讲到了进程对信号递达后的三种处理方式

2017-06-16 11:44:50 609

原创 linux:进程中信号的“3种状态 And 3张表”

高能预警本文主要介绍了信号在进程pcb中的表示方法并用代码验证其真实性。主要内容有:1.信号在进程中的表示方法:3种状态—3张表2.对上述方法进行代码验证,包括:信号集(sigset_t)和信号屏蔽字(Signal Mask)及信号集操作函数的介绍代码验证(pending表)————>全文阅读大概需要5min(我发四)<————3种状态 And 3张表在博主上篇博文中降到进程收到信号后,其可选

2017-06-14 19:04:07 2388

原创 linux信号基本概念及如何产生信号

阅前须知本文的主要内容有:1.信号的基本概念(包括进程对信号的3种处理方式)2.特殊信号举例:写代码证明信号存在,并实现信号的简单捕捉3.如何产生一个信号(代码举例:mykill的实现)其中拓展知识有:1.前台进程与后台进程(代码举例)2.核心转储core dumped的概念及其在代码调试中的作用(代码举例)——>全篇阅读大概需要5分钟<——信号的基本概念首先,我们可以用kill -l命令查看系统中

2017-06-14 09:34:21 11090 3

原创 10分钟搞定linux编辑器vim的配置

前言Vim是linux操作系统的一款非常强大的编辑器,配置Vim就是要让其形成一个像VS一样的IDE集成环境。所以为了能在linux下实现高效编程和开发,Vim的配置是必须要完成的一项任务。然而,对linux初学者而言,这无非是一个难度不小的挑战。但几乎每个初学者接触linux时,都会被要求配置vim,在网上搜索“vim配置”就会出现很多文章:网上诸如此类的教程有很多,给出的效果图也很高大上(所有在

2017-06-12 09:17:10 1984 2

原创 volatile关键字的作用

volatile关键字volatile关键字是C/C++众多关键字中的一个,但不常用。我们知道,为了提高程序程序执行的效率。大多数编译器都会对齐进行优化。优化级别由低到高分为:-O0~ -O3。但有时候,编译器的这种优化也会导致内存和CPU(寄存器)中数据不一致的问题,volatile关键字就是用来解决这种问题的。Code接下来我们以linux中的gcc编译器为例,编写一段代码证明volatile关

2017-06-12 09:09:38 511

原创 可重入函数与线程安全

一个问题为了理解可重入函数的概念,我们先来看这样一个例子:main函数调用insert函数向链表中头插节点node1,插入操作分为两步。假设它刚做完第一步的时候。由于硬件中断使进程切换到内核。再次回用户态之前检查到有信号待处理,于是切换到sighandler函数,sighandler也调用insert函数向同一个链表中头插节点node2。把插入操作的两步都做完之后从sighandler返回内核态,再

2017-06-11 12:30:15 437

原创 SIGCHLD信号与进程异步等待

进程等待首先,让我们先来回顾一下有关进程等待的知识。所谓进程等待,说的就是父进程等待子进程:如图,父进程调用wait和waitpid函数等待子进程,从而清理系统中的僵尸进程。在此过程中,父进程可以阻塞等待子进程结束,也可以非阻塞地查询是否有子进程结束等待清理(也就是轮询的方式)。若采用阻塞等待方式,父进程就不能处理自己的工作了;采用非阻塞方式,父进程在处理自己工作的同时还要时不时地轮询⼀下子进程状态

2017-06-09 17:32:39 497

原创 linux下gdb的安装方法

前言gdb是Linux环境下的代码调试工具,为了能在linux环境下更有好的编程体验。其安装可谓是势在必行。安装过程安装gdb的过程很简单,具体步骤如下:step1:首先检查系统中有没有安装过,有的话用一下命令卸载gdb旧版本step2:安装Texinfo文档系统(博主也不知道这是啥,反正照做就是了>~<)这个要先切换到root step3: 在网址:http://ftp.gnu.org/gnu/

2017-06-02 18:43:19 38115

原创 linux下”is not in the sudoers file“问题的解决办法

原因当有时候我们使用sudo命令切换用户的时候可能会遇到提示以下错误:xxx is not in the sudoers file. This incident will be reportedxxx是你当前的用户名,其实就是因为这个用户没有加入到sudo的配置文件里,解决办法就是打开配置文件加入用户权限。解决step1:用su换为root用户,并输入以下命令进入sudo配置文件step2:在配置文

2017-06-02 17:04:54 31330 1

原创 线程互斥与同步(part4)—终结篇:“一股清流”—读写锁(rwlock)

前言在博主上篇博文中,讲述了解决线程同步的“扛把子”信号量,并用代码实现其应用。欢迎小伙伴们围观!详情点击:linux线程互斥与同步(part3)—解决线程同步的”扛把子“:信号量( Semaphore)接下来博主将详细介绍linux线程互斥与同步的完结篇:读写锁(rwlock)一股清流为什么把读写锁称为一股清流呢?只因它是一种比较特殊的锁。那它特殊在哪里呢,我们先来讲一个不悲伤的故事:王铁锤和李狗

2017-06-02 13:56:33 882 2

空空如也

空空如也

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

TA关注的人

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