linux C
日常用到
最后冰吻free
不在沉默中死亡,就在沉默中爆发
展开
-
linux 网络序
在将ip字符串转网络序存储时。根据整形二进制显示判断。原创 2024-09-30 09:51:27 · 299 阅读 · 1 评论 -
linux 内核编译和日志
若想内核代码日志生效需要重新编译,安装,重启操作。后续待补充,关于内核跟踪调试。原创 2024-01-03 17:25:18 · 560 阅读 · 0 评论 -
安装openssl Makefile:688 configdata.pm报错
执行:sudo timedatectl set-time “yyyy-MM-dd hh:mm:ss”安装openssl报错:openssl Makefile:688 configdata.pm。关闭ntp服务:sudo timedatectl set-ntp false。查看:timedatectl status。环境centos8 aarch64。date查看时间发现时间没有同步。发现ntp服务是active。原创 2023-11-23 16:21:32 · 246 阅读 · 0 评论 -
gdb调试
break [args] if [cond]: 当【cond】这个运算为真时,设置中断点,args可以能是以上。rbreak regex: 使用正则表达式来寻找可能的函数,并在其进入点设置中断点;break function:在当前文件指定函数设置断点,c++中key使用。可能出现的详细位置,0-表示取消,1-表示所有设置断点,其他则设置相应的。down n:表示栈的下面移动n层,n可以省略,表示向下移动一层。up n: 表示栈的上面移动n层,n可以省略,表示向上移动一层。frame(f) n:切换栈。原创 2023-10-06 16:16:51 · 160 阅读 · 0 评论 -
本地无法正常连接ubuntu问题
远程连接原创 2022-09-29 16:48:42 · 969 阅读 · 0 评论 -
ip头解析
#!/bin/bashIPHEAD_HEXSTR=$1if [ $# -eq 0 ];then echo -e "Usage:$0 hexstr" exitfiif [ ${#IPHEAD_HEXSTR}%2 -ne 0 ];then echo -e "${IPHEAD_HEXSTR} error" exitfi#4位版本号HEX_VERSION_NO=${IPHEAD_HEXSTR:0:1}DEC_VERSION_NO=`echo "obase=1原创 2021-01-19 10:08:57 · 304 阅读 · 1 评论 -
四大排序算法
#include <stdio.h>void print_array(int *parray, int len){ int i = 0; for(i = 0; i<len; i++) { printf("%d ", parray[i]); } printf("\n");}/*冒泡排序: */int bubble_sort(int *parray, int len){ int i = 0; int j = 0; int tmp = 0; if原创 2021-04-28 21:43:48 · 104 阅读 · 0 评论 -
linux c字符串逆转
#include <stdio.h>#include <string.h>#include <stdlib.h>void my_str(char* str){ int len = strlen(str); int i = 0; char c; for (i = 0; i<len/2; i++) { //交换字符 c = str[i]; str[i] = str[len-原创 2021-03-15 10:47:14 · 240 阅读 · 0 评论 -
linux getopt函数应用
#include <stdio.h>#include <unistd.h>#include <getopt.h>int main(int argc, char** argv){ int res = 0; int longindex = 0; /* struct option { const char *name; //长参数名 int has_arg; //0原创 2021-03-05 10:46:28 · 102 阅读 · 1 评论 -
linux C柔性数组
#include <iostream>#include <string>#include <vector>using namespace std;//当不知道结构体中数组长度不确定时,堆区空间申请大小可以使用变量进行动态申请struct Test{ int a; char b[0];};int main(){ int len = 10; struct Test *st = (struct Test*)malloc(sizeof(struct Tes原创 2021-01-13 16:40:22 · 246 阅读 · 0 评论 -
linux C 自定义回调函数使用
//call_function.h#ifndef CALL_FUNCTION_H#define CALL_FUNCTION_Htypedef int *callback_random(char *random,int len);void set_callback(callback_random *cb);int genrate_random(char *random,int len);#endif//call_function.c#include "call_function.h"#原创 2021-01-11 19:06:52 · 271 阅读 · 0 评论 -
linux C插入排序
#include <stdio.h>#include <time.h>void insert_sort_print(int array[], int len, int i);#define MAX_NUM 4int insert_sort(int array[], int len){ int i = 0; int j = 0; int itmp = 0; for (i = 1; i<len; i++) { insert_原创 2020-10-14 23:09:19 · 165 阅读 · 0 评论 -
linux C 避免死锁
使用固定顺序获取锁,就是让两个互斥量总以相同的顺序上锁thread1 thread2mutex1 mutex2A BB A避免像个线程相互等待thread1 thread2join(id1) join(id2)避免嵌套锁一个线程已经获得一个锁时,再别去获取第二个锁,因为一个线程只有一个锁,锁上就不会产生死锁;避免在持有锁时调用用户提供的代码代码是用户提供的,用户程序可能做任何事情,包括获取锁,在持有锁的情况下,调用用户提供的代码,如果用..原创 2020-09-14 15:04:10 · 293 阅读 · 0 评论 -
linux 乐观锁和悲观锁
转载乐观锁、悲观锁及CAS、版本号转载 2020-09-11 11:25:35 · 223 阅读 · 0 评论 -
linux gdb调试
1.gdb filename 直接调试目标文件2.gdb attach pid 附加已运行的进程不想影响当前的进程,输入detach与进程分离3.gdb filename corename 调试core文件需要开启core文件生成ulimit -acore file size (blocks, -c) 0说明是关闭状态开启:ulimit -c unlimited 加入到.profile中source .profileulimit -a是否生效一般core文件生成所在目录都是在程序原创 2020-09-10 15:57:13 · 883 阅读 · 0 评论 -
linux C 内存泄漏
#include <stdio.h>#include <stdlib.h>void fun( ){ int *p = (int *)malloc(10*sizeof(int)); p[10] = 0;}int main(void){ fun(); return 0;}1.内存非法写入2.内存泄漏,没有释放3.申请内存所在代码行、源码位置6574 Memcheck, a memory error detector6574 Co原创 2020-09-09 16:22:25 · 407 阅读 · 1 评论 -
linux C消息队列
#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <string.h>#include <errno.h>#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <string.h>#include <errn原创 2020-08-19 14:44:50 · 216 阅读 · 0 评论 -
linux C命名管道
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>/* 命名管道:在系统中以特殊文件形式存在,不同于匿名管道,是全双工管道,发生在无亲原创 2020-08-19 14:40:51 · 278 阅读 · 0 评论 -
linux C匿名管道
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>/* 匿名管道: 1.匿名管道是半双工管道,一端用于写,另一端用于读, 写端关闭读管道,读端关闭写管道; 2.只能用于父子进程或兄弟进程间通信*/int main(){ int pipe_fd[2];原创 2020-08-19 14:35:21 · 202 阅读 · 0 评论 -
C 指针变量值和地址传递
void getmemory(char *p){ p=(char *) malloc(100); strcpy(str, "hello world");}int main(){ char *str=NULL; getmemory(str); printf("%s",str); free(str); return 0; } 这样操作每调用函数一次都会泄露一...原创 2018-06-25 16:46:53 · 1533 阅读 · 0 评论 -
C 语言union联合体(共用体)
联合体的特点: 1.联合体中所有成员都共用同一块内存空间,该空间每次只能存放一种数据类型,而不能同时存放所有数据类型,只有一个起作用,其它成员不起作用 2.联合体中起作用的成员是最后一次存放的成员,在新存放成员后,原有成员会失去作用; 3.联合体变量的地址和它的各成员地址是一样的; 4.不能对联合体变量名进行赋值,也不能引用联合体变量名来得到一个值...原创 2018-06-22 17:32:58 · 456 阅读 · 0 评论 -
C语言交换排序算法
#include <stdio.h>int main(){ //交换排序算法:外循环len-1次,元素比较n>n+1,则交换元素值,n>n+2则交换元素值 int arry[10]={4,2,1,9,7,3,5,0,8,6}; int i,j, iTemp; for(i=0;i<10-1;i++) { for...原创 2018-06-21 16:37:10 · 6039 阅读 · 0 评论 -
C 语言冒泡排序算法
#include &lt;stdio.h&gt;int main(){ //冒泡排序算法:相邻两个元素比较,如果后一个比前一个小,交换位置 int arry[10]={2,4,1,9,7,3,5,0,8,6}; int i, j, iTemp; for (i=0;i&lt;10-1; i++) { for(j = 0; j&lt;10-i...原创 2018-06-21 16:23:05 · 473 阅读 · 0 评论 -
linux C不用库函数实现字符串转数字
1.计算字符串长度;2.计算10的n次方;#include <stdio.h>#include <string.h>int get_power(int n){ int i =0 ; int sum = 10; if (n == 0) { return 1; } for (i = 1; i<n; i++) { sum *= 10; }...原创 2020-04-18 12:02:53 · 388 阅读 · 0 评论 -
linux 结构体对齐大小计算
1.对齐大小,可以设置,若对齐大于结构体中最大类型变量,则按照结构体中最大类型长度进行对齐;2.类型变量小于对齐大小,则需要进行补齐#include <stdio.h>typedef struct{ int a; double b; short c;}Teacher_def;// 按照8字节进行对齐/* a a a a * * * * b b b b b b b...原创 2020-03-10 17:09:49 · 291 阅读 · 0 评论 -
linux 网络编程(select)
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include ...原创 2019-12-25 16:57:00 · 197 阅读 · 0 评论 -
linux c socket多进程服务端
server_process.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/ine...原创 2019-12-19 14:30:01 · 196 阅读 · 0 评论 -
linux c mkdir遇到的坑
mkdir创建目录时,有时会报权限问题错误,创建目录失败,有时可以正常创建目录,但mkdir设置目录权限为S_IRWXU | S_IRWXG | S_IRWXO时,权限一直不正确,可能是这个问题导致的创建目录失败;1.mkdir函数对创建的目录进行设置权限之前,需要调用umask(0)函数,否则创建的目录权限不是自己传入的权限;权限值:mode&(~umask权限值取反);2.递归创...原创 2019-12-16 18:18:55 · 4199 阅读 · 0 评论 -
一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点。
1.若果知道链表头结点,一般都是通过遍历找到该结点p和前一个结点q后,断开p结点,连接q->next=p->next,释放free§;2.没有给出头结点,但将p后一节点q中的数据赋值给p结点,再释放q结点,也相当于删除p结点NODE* p;//为当前要删除结点NODE* q = p->next;//p结点的后一节点p->data = q->data;//数据赋...原创 2019-11-07 17:12:42 · 647 阅读 · 0 评论 -
linux C 单向链表(无头和有头结点)
#include <stdio.h>#include <stdlib.h>typedef struct student{ int num; struct student *next;}student;#define NODE_SIZE sizeof(struct student)/*************************************************原创 2017-04-24 22:03:54 · 720 阅读 · 0 评论 -
linux libssh2_userauth_list()函数password认证失败原因
因为libssh2_userauth_list()函数返回值有password、publickey、keyboard-interactive三种方式,具体根据返回值调用对应的认证函数根据用户名和密码方式验证时,libssh2_userauth_list()返回值中检测不到password/PASSWORD原因服务端密码认证被禁用:1.cd /etc/ssh2.vi sshd_config将P...原创 2018-12-03 14:19:13 · 2013 阅读 · 0 评论 -
linux C获取ini配置文件
#include <stdio.h>#include <string.h>#include <stdint.h>#include <memory.h>;int GetCfgItem(char* sFileName, char* sKey, char* sField, char* sValues){ FILE* fp = fopen(sFileName, "rb"); cha原创 2017-09-17 21:35:39 · 1646 阅读 · 0 评论 -
linux C 执行shell脚步
1.system(const char* command) system(“pstree”); system(“myshell.sh 1>>/dev/null 2 >>/dev/null”); 2.FILE* fp=popen(const char* command, const char* type) pclose(fp); fp = popen(“ps -ef”, “r”);以读形式大原创 2016-12-13 21:30:42 · 374 阅读 · 0 评论 -
linux 编译.c文件
cc -o test test.c 等价于 cc test.c -o test1.生成预编译文件:编译头文件和ifndef、ifdefine,生成*.i文件,可以进行查看 gcc -E test.c -o test.i 2.生成汇编文件:将预编译文件生成*.s汇编文件 gcc -S test.i -o test.s 等价于:gcc -s test.c -o test.s 3.生成目标文原创 2016-12-13 21:23:41 · 675 阅读 · 0 评论 -
十大排序算法
转载:https://www.cnblogs.com/onepixel/articles/7674659.html转载 2018-12-25 19:05:03 · 154 阅读 · 0 评论 -
C 函数指针与指针函数
指针函数:函数返回类型为指针类型 char * get_max(int i, int j) { } 将函数返回值用于赋值给其他变量指针函数指针:函数名称是一个指针 int (*p)(int i, int j); int get_max(int i, int j) { return i>j?i:j; } p = get_max;/* 将函数名赋值给p */ p(10,2原创 2017-10-18 23:31:07 · 197 阅读 · 0 评论 -
linux fork
#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ int iPid; int istatus; int pid; iPid = fork(); switch(iPid) { case -1: printf("fork fa原创 2017-11-05 00:05:06 · 192 阅读 · 0 评论 -
linux 多线程信号量(盘子水果问题)
#include <stdlib.h>#include <pthread.h>#include <stdlib.h>#include <unistd.h>#include <stdio.h>#include <semaphore.h>#define fruit_print(cnt) (cnt==1?"橘子":"苹...原创 2019-12-04 10:27:34 · 2293 阅读 · 0 评论 -
linux 多线程信号量(生产者消费者问题)
生产者消费者问题这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者和消费者都是异步方式运行的,但它们必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经装满...原创 2019-12-03 15:37:16 · 1408 阅读 · 0 评论 -
linux 多线程面试题
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC…依次递推。使用pthread_join进行阻塞,等对应的id线程运行结束再往下运行#include <stdlib.h>#include <pthread.h>#include <stdlib.h>...原创 2019-12-03 14:50:27 · 967 阅读 · 1 评论