- 博客(12)
- 收藏
- 关注
原创 exec族函数、system函数、popen函数
exec函数族提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件。l : 使用参数列表p:使用文件名,并从PATH环境进行寻找可执行文件v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。
2024-01-29 17:31:04
938
原创 创建进程、进程终止、进程等待及进程一些概念的补充
由于进程具有独立性,进程在执行 fork相应代码时,会在操作系统内部进行写时拷贝,使 fork对应的进程可以返回两个不同的值,再让对应的父子进程根据自己返回的 id,去执行 if 或 else if 中的代码内容。也就是说,孩子找父亲是具有唯一性的。通常情况下,父子代码共享,父子进程在不写入(不修改共享部分的数据)时,对应的数据也是共享的。我们可以从上面的代码发现,在使用fork之后,pid的值出现了两种分别是43676、43677,但是其中有一项与没使用fork时,一样,用下面一张图来对其进行解释。
2024-01-28 17:48:16
952
1
原创 关于树莓派3B+内核配置遇到的一个问题——No space left on device
我是在写一个“hello PATH”的简单程序,来确认配置是否有问题的时候发现的,这个问题大致是因为树莓派默认的系统空间已经被占满,无法再进行安装等操作。假设一个镜像的大小为 4G,由于该镜像对内存卡的要求是大于或等于 4G,但对于 4G以上的内存卡来说,树莓派的系统只利用到 4G,因此才有了扩容这种操作。第二类:已经扩容过了,则就需要删除一些无用的文件来释放内存。第一类:SD卡仍有空间未被使用,可以对树莓派进行扩容。会发现,/dev/root已经满了。毕竟这个时候我们利用指令。
2024-01-20 20:36:54
414
原创 进程相关概念及C程序的存储空间的分配
我们在编写完代码并运行起来时,在我们的磁盘中会形成一个可执行文件,当我们双击这个可执行文件时(程序时),这个程序会加载到内存中,而这个时候我们不能把它叫做程序了,应该叫做进程。当一个程序加载到内存中,操作系统要为刚刚加载到内存的程序创建一个结构体(PCB),进程信息被放在这个结构体中(PCB),可以理解为PCB是进程的属性的集合。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。cpu中的资源是有限的,不可能多个进程一起在CPU上运行,利用优先级把进程有效的先后排好,改善了系统的性能。
2024-01-20 17:30:04
1202
原创 关于树莓派3B+内核配置遇到的一个问题——nl80211
指令查看识别到的TF卡设备节点,正常情况下TF卡设备会自动挂载到/media/{当前用户目录}/下的boot和rootfs目录下,这个时候就没必要在自己重新创建目录进行挂载了。我也是在发现无法用SSH登录树莓派的时候,被告知无法连接,于是重新用串口连接,使用指令ifconfig发现我的wlan0不见了,一开始我以为是无线射频被锁起来了。然后用sudo ifconfig -a指令发现依旧没有,是将截图发给朋友看了之后,给了我上面这个提示,告诉我我的内核驱动没拷贝进去。当然,如果是自动挂载,那就执行。
2024-01-20 13:12:59
347
原创 标准C库对文件的操作——fopen、fread、fwrite的简单使用及open、read、write区别
在内存中开辟一个“缓冲区”,为程序里每一个文件使用,当执行读文件操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依次读入接收的变量。由此可以看出,内存“缓冲区”的大小,影响着实际操作外在的次数,内存“缓冲区”越大,则操作外存的次数就越少,执行速度就越快,效率就越高。系统调用write的效率取决于你buffer的大小和你要写入的总数量,如果buffer太小,你进入内核空间的次数大增,效率就低下。都用fread 和fwrite,它自动分配缓存,速度会很快,比自己来做要简单。
2024-01-19 13:51:56
1836
1
原创 实现linux cp指令的代码
或者main(int argc, char *argv[], char *enpv[]);int argc:整型,其中包括的是命令行参数的个数(如下图展示)char **argv:二维的char型指针,存放命令行参数字符串。char **enpv:二维的char型指针,存放环境变量。4、把写入的buf中的文件内容读取到demo2.c中。2、把demo1.c文件中的内容写到buf上。3、创建/打开demo2.c文件。
2024-01-18 17:20:20
445
1
原创 linux文件编程
在linux下一切皆文件,文件描述符是内核为了高效的管理已经被打开的文件所创建的索引,它是一个非负整数,用于指代被打开的文件,所有执行I/O操作的系统调用都是通过文件描述符完成的。从上面我们会发下,open函数如果调用,打开一个存在的文件,则会返回一个fd(file description),这就是前面介绍文件描述符及open函数创建文件描述符的方式,create函数亦是同理。O_TRUNC:属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。
2024-01-18 16:44:26
953
1
原创 linux内核配置——树莓派3B+
(4)再执行一次sudo apt-get install libcurses5-dev libncursesw5-dev(或sudo apt-get install libncurses5-dev)运行指令安装,因为内核配置时,有一部分是编译成模块的形式配置进来的,安装后hdmi接口、usb、wifi、io口等等的设备才能使用,所以需要这么一步。选择对应的版本,在code里选择download.zip下载压缩包,放到windows中自己之前弄过的共享文件夹中,方便在Ubuntu中文件的传递。
2024-01-11 15:25:35
1070
原创 【linux一】关于新创建的虚拟机安装vmware tools的一些心得
10、sudo apt-get autoremove open-vm-tools删除之前全部安装好的vmware-tools的东西 然后sudo apt-get install open-vm-tools-desktop,输入这个安装指令,应该就可以解决了(用上面注的方法测试),如果还遇到没安装上的问题,那我也没办法了,我是小菜鸡一枚~,以上是我安装的心得,希望对你有帮助。(如果到这里,看见VMware tools选项变成了重装VMware tools且没有变灰,表示已经安装好了,就不需要继续往下看了)
2024-01-11 14:33:21
1187
原创 LCD1602工作原理介绍
LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示16×02即32字符(16列两行),LCD1602主要用来显示数字、字母、图形以及少量自定义字符。可以显示。
2023-09-26 17:10:03
15218
原创 为什么字符串用sizeof算出来的长度和编程时写的字符数量比总是多1
得到的结果,分别为,5和6,但是通过printf打印str2和str3会发现得到的结果是一致的,都是hello,那么为什么计算长度时得到的结果却不一样呢?因为str3[]这个字符串的写法是已经自动加入了一个'\0'的结束标志了的,而这个'\0'也会被计算机记作一个字符。我们知道,计算一个数组长度时,总是会用到sizeof()这个关键字。如下图所示,是一个计算整型数组长度的方式。
2023-08-29 16:55:41
351
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人