Linux/C
不解释、
大勇若怯,大智若愚!
展开
-
无法获得锁 /var/lib/dpkg/lock 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
无法获得锁 /var/lib/dpkg/lock 无法锁定管理目录(/var/lib/dpkg/)原创 2022-12-06 16:07:09 · 651 阅读 · 0 评论 -
shell实现向文件中添加新内容
1、指定某行添加2、指定字符串之前添加3、指定字符串之后添加4、查找是否存在某一字符串原创 2022-06-20 17:57:42 · 8350 阅读 · 0 评论 -
报错解决:bash: ./xxx.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录
报错解决:bash: ./xxx.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录原创 2022-06-08 11:20:19 · 5075 阅读 · 2 评论 -
C语言几种排序算法
1、选择排序思路:依次选出数组最小的数放到数组的前面。首先第一个元素与后面的所有比较,找出最小的,放入数组第一个;接着第二个与后面所有比较,找出最小放入第二个;依次类推。代码实现#include <stdio.h>//printvoid printbuf(int* buf,int buflen){ for(int i = 0; i < buflen; i++) { printf("%d\t",buf[i]); } printf("\n");原创 2022-02-11 14:57:38 · 894 阅读 · 0 评论 -
linux系统报错:No space left on device 解决办法
报这个错误是磁盘空间不足导致的!围绕这,来一一排查:1、查看系统磁盘是否已满df -h查看磁盘已经满了,这时就要删除一些不需要的内容来释放空间2、查看具体哪个目录占用了大量空间du -sh -d 1 / | sort -nr发现home中有大量空间被占用3、进入home中继续排查哪个目录占用占用最大发现root下占用较多,进入到root下4、内容不是很多的情况下,就直接查占用最多的文件是哪个du -a /home/root/ -h | sort -n -r | head -n 10原创 2021-11-16 17:04:44 · 40644 阅读 · 0 评论 -
解压压缩包报错:tar: invalid tar magic
linux解压压缩包报错:tar: invalid tar magic原因:压缩与解压格式不匹配例:压缩:tar -zcvf xxxxx解压:tar -xvf xxxx这样的话,压缩与解压格式就不匹配,就会报这种错误!原创 2021-09-09 16:26:34 · 19781 阅读 · 2 评论 -
printf重写,可存入文件、也可存入缓存buff
重写printf,可用作日志等相关功能。代码:#include <stdio.h>#include <stdarg.h>void My_printf(const char* fmt,...){ va_list args; char tempbuf[256] = {0}; va_start(args, fmt); vsprintf(tempbuf, fmt, args); va_end(args); //若存入文件可用 //vfprin原创 2020-10-22 18:19:07 · 491 阅读 · 0 评论 -
ltoa() 、itoa()函数实现
代码如下:void ltoa(long num, char* str, int radix){ int i = 0; int j = 0; long sum; unsigned long num1 = num; //如果是负数求补码,必须将他的绝对值放在无符号位中在进行求反码 char str1[33] = { 0 }; if (num<0) { //求出负数的补码 num = -num; nu原创 2020-10-19 10:12:24 · 2091 阅读 · 0 评论 -
C语言实现日历时间转换为秒(mktime)
代码:#include <stdio.h>//转换unsigned long My_mktime(unsigned int year, unsigned int mon, unsigned int day, unsigned int hour, unsigned int min, unsigned int second){ unsigned int year_to_day = 0; unsigned int原创 2020-10-16 09:54:04 · 2853 阅读 · 4 评论 -
C语言实现 linux 下系统时间的设置
具体实现方法为,将要设置的时间转换为 时间单位秒(s),再以s的形式设置。#include <stdio.h>#include <stdlib.h>#include <time.h>#include <sys/time.h>#include <unistd.h>void main(){ system("date"); //未修改前的时间 TimeSet(2012,10,10,1,30,8); //修改时间原创 2020-09-04 10:05:43 · 4685 阅读 · 3 评论 -
xxxx.c:(.text 0x0): `xxxxx‘被多次定义 问题解决
有时候明明代码自己感觉写的都对,并没有出现多次定义的情况,但编译时还是报错被多次定义。。。。。。。如下:只说可能原因之一,肯定还有其他原因可能是由于写错,在包含头文件时,将.h写成了.c...原创 2020-08-19 12:09:15 · 3243 阅读 · 0 评论 -
C语言简单的多线程模板及测试
开三个线程,线程执行时间分别为3s、5s、8s#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <pthread.h>//线程IDpthread_t test01;pthread_t test02;pthread_t test03;#define PTHREAD_STOPE 0原创 2020-08-14 14:17:15 · 519 阅读 · 0 评论 -
验证系统大小端之简单宏(__BYTE_ORDER)实现
验证系统大小端可以自己写方法验证,也可以使用系统提供的宏来验证:1、简单共用体验证:通过字节存储地址判断:#include "stdio.h"union num{ int num; char buf[4];}a;int main(){ int i=0; a.num=0x12345678; printf("a.num[%p]\n",&a.num); for(i=0;i<4;i++) { printf("%x\n",a.buf[i]);原创 2020-08-14 14:10:13 · 2668 阅读 · 0 评论 -
C语言之链式栈简单实现
代码如下:/* 链式栈:实现接口 判栈空 返回栈顶元素 入栈 出栈 遍历栈*/#include <stdio.h>#include <stdlib.h>//栈节点typedef struct linkstack{ int data; struct linkstack *pNext;}LINKSTACK_T;typedef struct stack{ LINKSTACK_T *Top; LINKSTACK_T *Buttom; int原创 2020-06-16 15:27:44 · 277 阅读 · 0 评论 -
C语言链式队列简单实现
代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>//队列结构typedef struct queueNode{ int data; struct queueNode *pNext;}QUEUENODE_T;typedef struct Linkqueue{ QUEUENODE_T *front; //队头 QUEUENODE_T *rear;原创 2020-06-12 17:03:52 · 475 阅读 · 0 评论 -
C语言顺序栈简单实现
代码实现:/* 顺序栈:实现接口: 创建栈 判栈空 判栈满 返回栈顶元素 入栈 出栈*/#include <stdio.h>#include <stdlib.h>#define STACK_MAXLEN 20//定义栈结构typedef struct stack{ int data[STACK_MAXLEN]; int top;}STACK_T;//创建栈STACK_T *Create_Stack(){ STACK_T *NewS原创 2020-06-09 17:30:13 · 426 阅读 · 0 评论 -
进程间通信之消息队列实现例程
例程代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <time.h>#define MSGFILE "./msgkey" //当前键值获取路径原创 2020-06-03 13:40:15 · 398 阅读 · 0 评论 -
C语言实现乘方运算(m的n次方)
其实C库中有实现乘方运算的函数,在math.h中的pow函数;这里不使用库函数,自己实现:可以使用以下几种方法:普通实现位实现递归实现////例子如下:#include <stdio.h>#include <stdlib.h>/** 乘方运算,即m的n次方 (m^n)*///普通实现int power2(int m, int n){ int i = 1; int result = 1; if (n == 0) { return resul原创 2020-05-09 10:53:24 · 27405 阅读 · 0 评论 -
C语言数据类型转换与进制转换(hex转str,str转hex/ASCII,str转float/int,float/int转str,进制转换等)
理清楚数据类型转换,还是要回归ASCII码、引用一下的ASCII表http://ascii.911cha.com/方便对比学习。在单片机中其实是自动识别十进制与十六进制的,但是有时候需要对数据转换获取想要的进制数。下面介绍几种数据类型的转换,此外方法很多,只简单介绍本人愚见。一、字符串转ASCII字符串其实就是上述ASCII表中的图形栏内容,转换成hex,即变成对应的十六进制数。通常以01...转载 2020-04-07 10:51:01 · 7427 阅读 · 1 评论 -
函数指针以参数形式传入函数后的存储与使用
简单测试代码如下:#include <stdio.h>int(*fun2)(int, int) = NULL; //用于存储以参数形式传入的函数指针地址int fun1(int a, int b) //原处理函数{ printf("a+b=%d\n", a + b); //打印参数相加的值 return 0;}void temp(int (*fun)(int,i...原创 2020-04-01 16:05:28 · 312 阅读 · 0 评论