自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

modi000的博客

零碎的知识,简单的理解

  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

转载 &>/dev/null表示的意思

在Linux/Unix中,一般在屏幕上面看到的信息是从stdout (standard output) 或者 stderr (standard error output) 来的。许多人会问,output 就是 output,送到屏幕上不就得了,为什麼还要分成stdout 和 stderr 呢?那是因为通常在 server 的工作环境下,几乎所有的程序都是 run 在 background 的,所以呢,为了方便 debug,一般在设计程序时,就把stdout 送到/存到一个档案,把错误的信息 stderr 存

2021-04-28 16:53:05 1939

转载 虚拟内存与物理内存的联系与区别

操作系统有虚拟内存与物理内存的概念。在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且这是固定的,如果没有虚拟内存,且每次开启一个进程都给4G的物理内存,就可能会出现很多问题:因为我的物理内存时有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内

2021-04-22 15:05:47 233

原创 虚拟内存地址1G,2G,3G,4G

1G:1 00 0000 0000 00 0000 0000 00 0000 0000 (2^30)2G: 1000 0000 0000 00 0000 0000 00 0000 00003G: 1100 0000 0000 00 0000 0000 00 0000 00004G:10000 0000 0000 00 0000 0000 00 0000 0000...

2021-04-22 15:01:09 310

转载 PCB与进程分配资源

转载:https://blog.csdn.net/lvyibin890/article/details/82193900PCB(progress control block),进程控制块。这里先不讨论PCB是什么,其实进程这个概念本身就是一个很难理解的概念,当一个可执行程序被系统执行了以后,就变成了一个进程。那么这个进程中到底有什么东西呢,系统究竟给这个进程分配了哪些资源?另外,进程在内存中的存储是怎么样的?对于一个进程,它在被执行前其实是一个可执行程序。这个程序是被放在磁盘上的,当它要被执行的时候

2021-04-22 14:48:47 192

原创 c语言中函数参数为指针的情况说明

我们看到函数的定义时,参数经常是一级指针或者二级指针;一般来说,当函数参数为一级指针的时候:我们传递的参数是一个普通变量的地址,而不是一个一级指针变量;当函数参数为二级指针的时候,我们传递的参数是一个一级指针变量的地址,而不是一个二级指针变量。...

2021-04-22 08:58:24 2042

原创 进程八种终止方式(很重要)

进程的终止进程的返回值是给其父进程看的,main()函数的返回值,return 0; 这个0就是给父进程看的。我们在shell中启动该进程,则shell就是该进程的父进程。在shell中查看上一进程的返回值,命令:echo $?倘若没有返回值,此时执行echo $? ,如上打印的是7; -----》是printf的返回值:7个字符。1、正常终止1)从main函数中返回------>return 0;2)调用exitman 3 exit返回...

2021-04-19 21:17:40 5833

原创 使用atexit()函数来注册钩子函数

----参照网络视频整理也可以使用on_exit,大同小异,一般习惯用atexit().以atexit() 注册的函数,会以注册的逆序(reverse order)释放。atexit ----register a function to be called at normal process termination进程正常终止时,函数会被调用,用来注册钩子函数。解释:进程正常终止时,会调用钩子函数,释放该释放的内容。钩子函数,类似C++中的析构函数。#includ...

2021-04-19 20:38:30 442

原创 linux中使用make命令编译

1、文件夹中仅存在.c文件,不存在makefile:----------直接make .c的文件名例如:main.c执行 make main-----》会执行 gcc main.c -o main2、文件夹中存在.c文件和makefile,makefile中仅有编译选项和链接选项main.c makefile//makefile中内容:CFLAGS += -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE...

2021-04-19 20:07:59 4601

转载 按位与、或、异或等运算方法

转载:http://blog.sina.com.cn/s/blog_618199e60100ka5b.html按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即 0000 0011 & 0000 0101 = 0000 0001因此,3&5的值得1...

2021-04-19 19:49:42 465

原创 pdf另存为图片不清晰

存在问题:pdf另存为图片不清晰?解决方法:使用别的pdf阅读器。使用Adobe Acrobat 7.0 Professional 另存成图片后,图片清晰。

2021-04-19 16:04:40 1399

原创 fcntl()函数和ioctl()函数

1、fcntl()----管理文件描述符,文件描述符所描述的内容都来源于该函数。arg---是cmd 对应的参数。命令不同,对应的额arg不同,对应的返回值也不同。dup,dup2函数就是通过该函数封装的。2、ioctl()-----管理设备相关的内容man ioctl...

2021-04-18 12:43:29 367

原创 同步用到的函数

1、syncman 2 sync作用:将内核中的buffer和cache同步到硬盘。全局催促。---一般解除设备挂载(关机)的时候,使用。2、fsync同步一个文件的fdbuffer或cache.3、fdatasync只刷数据,不刷亚数据。数据是指:一个文件中的有效内容。亚数据:文件的属性,修改时间等等。...

2021-04-18 12:27:00 144

原创 dup2函数的使用-文件输出重定向

-------------------参考网络视频整理1、可以通过如下形式,占用1文件描述符,这样,原先输入终端的内容,会输入到我们定义的文件中。#include <stdio.h>#include <stdlib.h>#iclude <sys/types.h>#include <sys/stat.h>#include <tctnl.h>#include <unistd.h>#define FNAME "/.

2021-04-18 12:17:44 1163

原创 原子操作

原子操作:不可分割的操作;作用:解决竞争和冲突,适用于多进程和多线程并发。如,tmpnam()函数就存在操作不原子,故我们会使用tmpfile函数,因为该函数则是原子化。

2021-04-18 10:39:29 86

原创 truncate/ftruncate 函数使用

man 2 truncate查看系统调用中如下函数的原型。truncate----将未打开的文件截断到多长;ftruncate----将已打开的文件截断到多长。

2021-04-18 10:31:49 232

原创 使用time命令查看当前进程执行所需要的时间

格式:在执行的命令前使用time ,如下图所示。mycpy进程的作用:将文件拷贝到另一个文件中。real time:比 user time+sys time时间之和多一点---因为要包括调度等待的时间,如时间片轮询或被信号打断。--用户最终体验的时间user time:用户层面的时间sys time:进程执行在kernel层面(系统调用层面)的时间我们无法改变调度时间,只能去缩短 user time+sys time的时间。...

2021-04-17 23:34:27 411

原创 判断当前年份是否是闰年

判断条件:当前的年份能被4整除但不能被100整除,或者能被400整除。口诀:四年一闰;百年不闰;四百年再闰;是四的倍数,但是当是百年的时候,必须是400的倍数。参考https://zhidao.baidu.com/question/2016143539119505908.html地球公转的时长是固定的,365天5小时48分46秒。 近似365天6小时,故4年少算了24小时,故每4年在2月份上加了1天。但是,因为实际上并没有365天6小时,故导致每400年会多算了3天,故需要在

2021-04-17 10:44:51 563 1

原创 标准错误,stderr会直接显示在终端的

标准错误,stderr也是会显示在终端的,是无缓冲的,立即显示,这一点是不同于stdout的。

2021-04-17 09:50:17 497

原创 IO操作总结及系统调用IO函数的使用(open....)

参考书《unix高级环境编程》IO操作分为:标准IO:stdio系统调用IO:sysio(文件IO)注:当二者都能用的情况下,优先使用标准IO解释:标准IO是依靠系统IO实现的(是将系统IO进行了封装),但是如果平台不一样(如windows或linux)系统IO就不同,标准IO则解决了跨平台的问题(比如,都是#include <stdio>,printf则windows或linux下都能使用)(比如,stdio中fopen 在windows下依赖openfile,在lin

2021-04-15 22:33:16 897

原创 fopen通过w、w+、a、a+创建文件时文件权限问题

fopen中属性中只有r和r+是要求文件必须存在的,而w、w+、a、a+则文件可以不存在,此时,当文件不存在时,我们会先创建文件:此时创建出来的文件权限是默认是664.(-rw-rw-r--)664的由来:我们知道,文件有三种权限 -rwx文件权限公式:0666 & ~umask //八进制数666与umask的值取反后的与。//消掉某些权限。//110 110 110 & 111 111 101即:将0666----->11...

2021-04-15 16:20:12 3677

原创 ulimit -a命令的使用

显示一些参数,其中包括能够打开的文件个数总数我们使用 ulimit -n 1000 //可以更改可打开的文件总数。

2021-04-15 16:02:55 521 1

转载 realloc() 用法详解

转载:https://blog.csdn.net/sy_123a/article/details/108264245原型:extern void *realloc(void *mem_address, unsigned int newsize);语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。 //新的大小若小于原来的大小,原数据的末尾可能丢失(被其他使用内存的数据覆盖等)头文件:#include <stdlib.h> 有些编译器需要#i...

2021-04-12 12:31:37 5274

原创 程序注释的方式

我们在写程序时,简单的注释:1)使用return 0;结束函数的运行,在return 0;后的内容不执行;2)使用#if 0#if 0//代码#else//代码#endif

2021-04-11 14:02:00 523

原创 word中表格无法调节单元格的高度

我们看到右边有多个换行符,选中多余的换行符,右键---》删除行 即可。

2021-04-07 16:59:55 485

转载 互斥锁

Linux中提供一把互斥锁mutex(也称之为互斥量)。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。但通过“锁”就将资源的访问变成互斥操作,而后与时间有关的错误也不会再产生了。但,应注意:同一时刻,只能有一个线程持有该锁。当A线程对某个全局变量加锁访问,B在访问前尝试加锁,拿不到锁,B阻塞。C线程不去加锁,而直接访问该全局变量,依然能够访问,但会出现数据混乱。所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时

2021-04-06 13:53:22 851

转载 如何理解fgetc函数其返回值类型必为int

fgetc函数函数原型:int fgetc(FILE* stream);参数说明:参数为一个文件指针,表明可以从任何流中读取字符。返回值说明:读取成功返回该字符,读取失败或者读取到文件末尾(EOF)则返回EOF(-1)。返回值的类型注意是int类型而不是char类型,如果定义一个char类型的变量会出现以下两种非预期的错误。当编译器把char类型翻译成usigned char时,while变成死循环。char ch;while(ch = getc(fp)) != EOF){}/*.

2021-04-05 23:20:19 927

原创 将ms 转换为 timeval结构体

#include <sys/time.h>void msec2timeval(struct timeval *tvp, long msec){ tvp->tv_sec = msec / 1000; tvp->tv_usec = (msec % 1000) * 1000; return;}函数的实质:是将毫秒数拆分成秒和微秒的之和。例如:9999ms = 9s + 999000us说明: (tv_sec : 秒, tv_...

2021-04-02 16:29:49 473

QNX编译器快速入门指南

该资料介绍了使用QNX编译器进行创建工程、编译连接工程、调试工程等内容,浅显易懂、适合初学者快速入门。

2020-10-12

空空如也

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

TA关注的人

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