Linux实验
low_talents
花里胡哨的写bug
展开
-
链接
链接的基本概念 链接是将各种代码和数据片段收集起来组合成一个单一文件的过程,且这个文件可以被加载到内存中并执行 链接可以执行于编译时,也就是在源代码被翻译成机器代码的过程中 链接可以执行于加载时,也就是在程序被加载器加载到内存中并执行 ...原创 2019-12-08 15:36:59 · 296 阅读 · 0 评论 -
系统级I/O
文章目录UNIX I/O打开文件 UNIX I/O 一切皆文件是窦豆老师上课常说的一句话。 在UNIX中所有的内容都可以看成是文件,所有的输入和输出都被当做是文件的读和写,比如在UNIX中open()函数和close()函数是用来打开和关闭文件,read()和write()函数则是用来读写文件,一切的操作都与文件息息相关。接下来让我们分析几种关于UNIX文件操作的函数。 打开文件 在UNIX中打开...原创 2019-12-07 11:28:20 · 264 阅读 · 0 评论 -
fork-----------一个让人迷惑的函数
fork函数简介 通过调用fork函数进程可以创造一个与之一模一样的进程。 我们称被创造的进程为子进程,进程本身为父进程。 何为一模一样? 意思就是新创建的子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份副本,包括代码和数据段、堆、共享库以及用户栈。 同时,子进程还获得与父进程任何打开文件描述符相同的副本,这就意味着当父进程调用Fork函数时,子进程可以读写父进程中打开的任何文件。 我...原创 2019-12-06 23:42:18 · 321 阅读 · 0 评论 -
将数转化为字符的函数
hexify函数 如图所示,其为hexify函数的C代码 【函数说明】 argv数组:在Linux系统中,我们在终端输入的各种数据在LInux的C编译器中会以一个数组的形式呈现出来,一开始我们会输入./a.out 这个指令来运行这个C程序,而这个./a.out 也会被当成一个数据放在数组argc中,然后,我们会在./a.out 后加上你想要输入的参数,如果我想输入31这个数据的话,那么我需要输...原创 2019-05-30 00:30:18 · 1234 阅读 · 0 评论 -
数在计算机中如何存放
数在计算机中如何存放 当我们向计算机输入一个又一个的数据时,这些数据在计算机内部怎么存放的呢?如下为检测计算机中数的存放的一个C代码,这个代码将向我们展示数在计算机中的存放位置及存放规则。 /* show-bytes - prints byte representation of data / / $begin show-bytes / #include <stdio.h> / $en...原创 2019-05-30 00:33:18 · 518 阅读 · 0 评论 -
数组扩张造成的问题
结构体中的数组扩张 在一个结构体中,我们定义一个数组和一个数据,会不会有那么一种情况使得这个数据的输出并非我们一开始输入的呢?如果会,那又是什么原因呢? 先让我们来看一下下面这个C程序: 从上面的C程序看来,结构体struct_t中的双精度数d的初始值为3.14。接下来,让我们在LInux下运行该程序: 从上面两次运行看来,s.a[0]和s.a[1]被更改对s.d并没有什么影响。 而从f...原创 2019-05-30 00:35:29 · 158 阅读 · 0 评论 -
进行深度递归的时常错误
栈 当我们在运行递归函数时,有的同学一上来就给这个函数进行一个深度递归,成功运行还好,但是一旦不成功则会使栈蹦掉,入下面的一个深度递归的程序。 这个函数描述的内容为分别显示出数与其地址。接下来,让我们来运行这个程序。 在Linux重,不输入任何参数则默认的是100,输出100到1的地址。 如图所示,该程序运行到38时,出现错误,并没有一直进行到1,这是为什么呢? 原因:在深度递归的过程中,每一...原创 2019-05-30 00:39:22 · 1093 阅读 · 0 评论 -
数的溢出
数的溢出: 22>=0 ?? 30003000>=0 ?? 40000 40000>=0 ?? 5000050000>=0 ?? 假设要你判断上面式子的正误,你肯定会说这是对的,因为从小学起老师教给我们的知识就是任何实数的平方大于等于0。 但是,假设要机器来运算上面的式子是否跟我们想的一样呢?下面是一个用C语言编写的一个计算整型数据的平方的程序: 让我们在Lin...原创 2019-05-30 00:41:46 · 254 阅读 · 0 评论