![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux系统编程
JiaXianghao.
这个作者很懒,什么都没留下…
展开
-
线程池
threadpool.c#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <assert.h>#include <stdio.h>#include <string.h>#include <signal.h>#incl...原创 2020-04-20 10:53:55 · 122 阅读 · 0 评论 -
linux常用命令
wc命令(word count)使用语法wc [option] … [FILE]…选项 -c, --bytes 打印字节数 &nb...原创 2020-07-10 14:55:58 · 145 阅读 · 0 评论 -
IPC概述
IPC分类消息传递:管道、FIFO、消息队列同步:互斥锁、条件变量、读写锁、信号量共享内存区:匿名共享内存区、有名共享内存区过程调用:Solaris门、Sun RPC互斥量和条件变量往往用于线程间的同步,但是他们也能提供不同进程间的同步IPC的持续性IPC类型持续性管道随进程FIFO随进程Posix互斥锁随进程Posix条件变量随进程Posix读写锁随进程fcntl记录上锁随进程Posix消息队列随内核Posix有原创 2020-06-20 11:01:17 · 331 阅读 · 0 评论 -
信号处理
信号是一种异步的通信方式(信号的到来是异步的,可以与管道对比下)Linux系统中有许多信号,前31号信号都有一个特殊的名字,对应于一个特殊的时间,有时会将他们成为非实时信号,这些信号都是从UNIX系统继承下来的,他们还有个名称叫做不可靠信号。后面31个信号是Linux系统新增的实时信号,也被称作可靠信号,而非实时信号没有固定的次序非实时信号特点非实时信号不排队,信号的响应会相互嵌套如果目...原创 2020-02-24 16:20:16 · 681 阅读 · 0 评论 -
文件IO
在进行文件描述符的分配的时候,会选择一个最小且未用的返回/************************************************************************* > File Name: 01_test.c > Author: Jia Xiang Hao > Description: > C...原创 2020-02-23 16:03:32 · 96 阅读 · 0 评论 -
进程使用注意点
进程使用注意点fork( )会使得进程本身被复制(想想细胞分裂),因此被创建出来的子进程和父进程几乎是一模一样的,说“几乎”意味着子进程并不是 100%为一份父进程的复印件,他们的具体关系如下父子进程的以下属性在创建之初完全一样,子进程相当于搞了一份复制品:实际 UID 和 GID,以及有效 UID 和 GID。所有环境变量。进程组 ID 和会话 ID。当前工作路径。除非用chd...原创 2020-02-23 15:33:51 · 155 阅读 · 0 评论 -
找不到动态库解决方案
方法1 使用环境变量LD_LIBRARY_PATH 将动态库的绝对路径添加到该环境变量中 LD_LIBRARY_PATH=/usr/include/xxx:$LD_LIBRARY_PATH export LD_LIBRARY_PATH 直接在shell中是临时配置,我们可以写入到系统的配置文件中(~/.bashrc或者/etc/profile),从而达到永久配置的目的方法2 给动态...原创 2020-02-20 16:02:15 · 995 阅读 · 0 评论 -
内核链表
什么是内核链表?在我们以往见到的链表中,数据域和指针域是位于同一个“等级”上的成员,如下图所示,所以我们就可以针对这个结构产生对其进行增删改查的相关函数。那什么是内核链表呢?从名字上我们可以看出内核链表不就是内核中的链表吗!说的没错,内核链表就是在linux内核中使用的链表,那它和普通的链表有什么不同之处呢?先看下图,你会发现没有了指针域,此刻你心想这TM不是扯吗?没有了指针域还能叫做链表吗?先...原创 2019-11-24 22:34:13 · 242 阅读 · 0 评论 -
vim常用操作
vim常用操作移动到行首:命令模式下的‘0’移动到行尾:命令模式下Fn+End原创 2019-08-15 13:26:10 · 230 阅读 · 0 评论 -
GDB调试总结
加入调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如: gcc -g hello...翻译 2019-09-16 14:01:54 · 271 阅读 · 0 评论 -
makefile编写
makefile建立1.最简单的makefile2.makefile进阶3.makefile优化(1)常用的变量名(约定俗成的):(2)一些特殊字符(3)特殊变量(4)makefile内置函数代码makefile三要素:目标;依赖;命令 ...转载 2019-09-16 15:50:49 · 134 阅读 · 0 评论 -
交叉编译搭建
交叉编译工具使用(生成的执行文件 可以在其他操作平台上运行 这样我们的代码就具有可移植性) 例如:我们在Windows下x86芯片编译的文件 ,可以在arm芯片上执行该文件 这就是交叉编译的作用。1.交叉编译工具简介与生成 &nb...原创 2019-09-04 17:32:39 · 223 阅读 · 0 评论 -
生产者消费者问题(Producer-consumer problem)
头文件#ifndef _QUEUE_H#define _QUEUE_H#define QUEUE_DEEP 10extern int myerror;typedef struct Node{ // BINODE *pnode; int num; int count; struct Node *next;}QNODE, QUEUE;int queue_is_empty(...原创 2019-11-19 10:54:21 · 3843 阅读 · 0 评论 -
守护进程
定义守护进程是在后台运行且不与任何控制终端关联的进程守护进程的启动方法1) 在系统启动阶段,许多守护进程由系统初始化脚本启动。这些脚本通常位于/etc目录或以/etc/rc开头的某个目录中,他们的具体位置和内容却是实现相关的。由这些脚本启动的守护进程一开始就拥有超级用户特权2) 许多网络服务器是由inetd超级服务器进程启动。inetd监听网络请求,每当有一个请求到达时,启动相应的实际服务...原创 2019-10-22 17:14:33 · 75 阅读 · 0 评论 -
标准IO
fopen函数的原型 : FILE *fopen(const char *path, const char *mode)函数的功能 : stream open functions 获取文件指针函数的头文件 : #include <stdio.h>函数的参数分析 :const char *path : 路径 我们要打开的文件的具体路径,都是一行字符串cons...原创 2019-09-28 21:36:04 · 68 阅读 · 0 评论 -
进程环境
进程终止方式正常终止1) 从main返回2) 调用exit3) 调用_exit或_Exit4) 最后一个线程从其启动例程返回5) 从最后一个线程调用pthread_exit异常终止1) 调用abort2) 接收到一个信号3) 最后一个线程对取消请求做出响应备注:main函数返回一个整型值和用该值调用exit是等价的,因为启动例程会在main返回后立即调用exit函数(exi...翻译 2019-10-08 17:55:59 · 242 阅读 · 0 评论 -
linux下串口使用
串口终端编程顺序 打开->设置->读写->关闭。涉及到的API。(1)、获取终端属性tcgetattr() 原型:int tcgetattr(int fd,struct termios *termios_p);...原创 2019-09-01 22:01:54 · 1390 阅读 · 0 评论