03unix_c
文章平均质量分 62
halazi100
勤勉务实、守正创新
展开
-
如何生成coredump并解析
如何生成coredump并解析。原创 2023-07-05 15:47:59 · 1575 阅读 · 0 评论 -
Linux系统操作基础
Linux系统操作基础Linux操作系统是一个多用户的操作系统;每一个用户需要使用对应的账号登录后才可以操作;原创 2022-06-13 13:28:45 · 371 阅读 · 0 评论 -
undefined reference to xxx 问题总结
undefined reference to xxx 问题总结GCC编译过程预处理Pre-Processing;宏展开等,可以生成.i文件编译Compiling(狭义的编译);进行语法分析,转换成汇编语言,生成.s文件汇编Assembling;把汇编语言代码转换成目标代码,生成.o文件连接Linking;连接器ld将as创建的目标文件转换为可执行文件,生成a.out文件代码的基本语法与格式错误一般是在前几个阶段被发现的,在最后一步即连接时才会报错 undefined reference原创 2022-03-30 19:15:07 · 1100 阅读 · 0 评论 -
C++函数调用栈使用进阶
函数调用栈高级用法当程序运行异常退出时自动打印当前的函数调用栈,便于分析定位问题;设计思路:设计一个C++类 CallStack, 该类封装函数调用栈相关信息的搜集与组装;设计一个C函数 callstack_dump(), 该接口创建一个函数调用栈类实例对象并输出函数调用栈;设计一个信号处理函数 signal_SEGV_handler(int),该接口用于调用上一步的API;使用上一步设计的函数,注册为信号处理函数;模仿android封装一个callstack类CallStack头文件原创 2021-07-20 13:26:05 · 830 阅读 · 0 评论 -
clock_gettime获取系统时间
clock_gettime获取系统时间clock_gettime()是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。需要包含头文件#include<time.h>函数原型为int clock_gettime(clockid_t clk_id,struct timespec *tp);参数clk_id 获取和设置指定时钟时间的 clk_id;//CLO...原创 2020-05-05 22:24:20 · 20992 阅读 · 0 评论 -
RTP sender发送示例
UDP socket封装成简单的RTP包并发送的示例首先使用FFmpeg将一段音频转换为pcm格式的文件然后不断的读取文件并拼装RTP头发送至接收端比如android的audio track播放;/* * rtp sender */#include <stdio.h>#include <stdlib.h>#include <stdbool.h&...原创 2020-02-28 10:53:44 · 1115 阅读 · 0 评论 -
Linux系统udp socket编程示例
server端/* * UDP网络编程服务端 */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <...原创 2020-02-19 21:02:20 · 843 阅读 · 0 评论 -
socket example
# UTF-8服务端程序源文件为server/server.c客户端程序源文件为client/client.c分别进入server和client目录后执行make即可生成server和client应用首先开启server,然后再另一个中断打开client即可连接到server/* * server * */#include #include #includ原创 2016-06-13 22:08:23 · 515 阅读 · 0 评论 -
Linux系统IPC进程间通信
IPC 进程间通信(两个/多个进程数据交互); 了解:信号应用中的计时器;用指定的初始间隔和重复间隔时间为进程设定号一个计时器后,该计时器就会定时的向进程发送时钟信号;Linux为每个进程维护3个计时器,分别是 真实计时器SIGALRM 计算程序运行的实际时间; 虚拟计时器SIGVTALRM 计算程序在用户态时原创 2015-08-25 20:03:41 · 812 阅读 · 0 评论 -
Linux文件系统文件属性及目录操作函数
void*是万能指针,可以转换成其他任意类型的指针;int stat(const char *path, struct stat *buf);//不需要打开文件int fstat(int fd, struct stat *buf);//需要open后获取fdint lstat(const char *path, struct stat *buf);//操作软链接文件stru原创 2015-08-25 19:47:54 · 776 阅读 · 0 评论 -
Linux文件系统及相关操作函数
文件系统文件系统的基本概念 1.在Unix操作系统中,每个文件以一个或多个数据块离散的存放在磁盘的块表区中(柱面表区); 2.一个文件的每个数据块的存储位置保存在I节点(i-node)中; 3.对应系统中多个文件的I节点保存在磁盘的I节点表中,每个I节点通过一个下标唯一地标识,这个下标称为I节点号; 4.文件的名称和其所对应的I节点号保存在目录文件中;原创 2015-08-25 19:41:11 · 817 阅读 · 0 评论 -
Unix/Linux系统网络编程
网络编程网络常识//程序员需要知道关于网络的一些基本常识,最重要的是IP地址和端口;网络编程: TCP 和 UDP; ISO/OSI七层协议模型================================= 7 应用层Application *** | 6 表现层Presentation *** |//原创 2015-08-25 20:09:04 · 658 阅读 · 0 评论 -
Linux系统编程多线程技术
线程 线程是轻量级的代码并行技术;线程不需要复制进程的资源,而是直接共享进程的资源; 线程只需要一个额外的栈就可以了;因此很多应用都是使用多线程技术; 主流的操作系统支持多进程,每个进程的内部支持多线程,线程可以嵌套; JAVA语言中没有进程概念,因为Java本身是运行在虚拟机中的,而虚拟机本身就是一个进程; 大多数应用程序都是使用多线程;原创 2015-08-25 20:13:21 · 635 阅读 · 0 评论 -
Linux系统信号管理相关操作函数
Unix信号管理 信号(signal) Unix系统中,用信号实现软件中断; Ctrl+C ->SIGINT 段错误 ->SIGSEGV 总线错误 ->SIGBUS 浮点数例外 ->SIGFPE 终端关闭 ->SIGHUP 定时到期 ->SIGALARM C原创 2015-08-25 19:58:17 · 497 阅读 · 0 评论 -
Linux系统gcc编译指令
Unix操作系统是美国AT&T公司于1971年在PDP-11上运行的操作系统;具有多用户多任务的特点,支持多种处理器架构,最早与1969年在AT&T的贝尔实验室开发;贝尔实验室还研发了C语言;Unix的三大派生版本 System V AIX / Solaris / HP-UX / IRIX Berkley FreeBSD / NetB原创 2015-08-24 19:29:47 · 979 阅读 · 0 评论 -
Linux系统编程静态库和共享库
windows下的dll即是动态链接库;Linux中叫共享库;企业开发经常会把程序打包成一个库文件,进行整合和管理;库分为: 静态库和共享库(又称动态库); 库是.o文件的打包;"静态库"是代码的归档,在编译连接时会"复制"这段代码到目标文件中; //优点是独立,连接完成后就不再需要静态库,而且速度会稍快; //缺点是占用空间太大,修改和维护不方原创 2015-08-24 19:32:09 · 655 阅读 · 0 评论 -
Unix/Linux的内存管理
1.内存分配和回收的相关函数 STL容器->自动分配和自动回收; | C++语言->new/delete;/*不是函数,没有括号,是操作符;*/ | C语言->malloc()/free(); | Unix系统函数->sbrk()/brk();/*都可以自动分配和自动回收;*/ | Unix系统函数->mma原创 2015-08-24 19:38:40 · 620 阅读 · 0 评论 -
Linux系统内存管理及相关操作函数
堆内存的管理(程序员全权负责)malloc()和free(); C程序员分配和回收内存的工具;malloc()在Unix系统中一次映射33个内存页,如果申请的内存比较大(达到32个内存页),系统会映射出比用户申请的内存稍大的内存页数;牺牲空间换时间;int *pi = malloc(4);//malloc(16);free(pi);//free()如何知道释放多少空间原创 2015-08-24 19:42:01 · 617 阅读 · 0 评论 -
Linux系统程序员的错误处理
程序员的错误处理要把正确的搞定,也要把错误的搞定,还要防止别人有意无意的破坏;主流的编程语言(除了C语言外)基本都使用异常机制处理错误,C语言中没有异常机制;C程序员是用返回值代表是否出错,主要有以下4种情况: 1.如果返回类型是 int(如主函数/随机数等),并且返回值不可能是负数,正常数据会直接返回,用返回-1代表出错(如返回数组下标>=0); 2.如果返回类型原创 2015-08-24 19:33:59 · 413 阅读 · 0 评论 -
Linux系统C程序员的环境变量和环境表
C程序员的环境变量和环境表 C语言中环境存储在字符指针数组中,就是环境表; 环境表可以看成是二级指针,用来指定环境变量;char *s[5]; //字符指针数组,元素是字符指针;char **s; //二级指针环境表的使用只需要写上 extern char** environ; //外部全局变量environ就是环境表的首地址;e原创 2015-08-24 19:35:06 · 1169 阅读 · 0 评论 -
Linux系统C语言操作环境变量的函数
C语言操作环境变量的函数系统提供了很多关于环境表和环境变量的函数; getenv() 按环境变量的名取得环境变量的值;返回指向name关联的value的指针; putenv()/setenv() 设置环境变量; //区别:putenv()参数格式"name=value",setenv()是三个参数(分开),putenv()一定会替换已经存在原创 2015-08-24 19:36:40 · 1488 阅读 · 0 评论 -
Linux系统环境变量
环境变量: 操作系统在启动时会把一些常用的东西预先加载到内存中,就是环境变量; 我们的Linux命令可以直接使用而不需要使用路径,是因为开机启动时已经被加载到PATH环境变量了;比如: 可执行文件默认是要带路径的,但如果把它的路径配置在环境变量PATH中,就可以不带路径在任意目录下直接用文件名启动; //有利有弊 我们执行程序是使用./a.out是因为.原创 2015-08-24 19:30:56 · 490 阅读 · 0 评论 -
Linux系统进程管理及相关操作函数
Unix进程的启动顺序 系统启动进程0,进程0只负责启动进程1(init进程)或启动进程1和进程2; 其他进程都是由进程1或进程2启动的;Unix用进程的PID标识进程,PID的本质就是一个整数;每个进程都有一个唯一的进程ID(PID),在同一时刻进程的PID不会重复;进程的PID可以延时重用;几个常用函数 getpid() 取当前进程的PID原创 2015-08-25 19:54:53 · 556 阅读 · 0 评论 -
Linux系统线程同步技术
线程同步技术 由于同一个进程内部的多进程共享进程的资源,因此可能出现共享数据的冲突;解决方案就是把有可能出现冲突的代码改成排队串行(部分串行); 这种技术叫线程同步技术,线程同步技术有很多种,Uc主要有三种 1.互斥量 2.信号量 3.条件变量 注意线程同步技术会大幅降低效率,因此要尽可能少用,但是如果有共享数据冲突的代码,一定要使用;尽原创 2015-08-25 20:15:36 · 390 阅读 · 0 评论 -
守护进程
守护进程 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。守护进程简介转载 2015-06-18 09:35:39 · 347 阅读 · 0 评论