![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX系统编程
JackReach
搬砖啊
展开
-
非阻塞超时轮询
0x00 概述一下看libevent超时机制,所以用终端读取模拟一下超时机制0x01 代码展现#define ErrMsg(msg){\ do{\ perror(msg);\ exit(1); \ }while(0);\}int main(int argc, char* argv[]){ char buf[1024];原创 2017-08-23 11:53:12 · 495 阅读 · 0 评论 -
linux编译动态库和环境绑定
#编译动态库g++ mysqlfunc.cpp -fPIC -shared -o libmysqlfunc.so#将动态库和主文件合成到一起reacher@ubuntu:~/sqlfunc$ g++ main.cpp -o main.out -I/usr/include/mysql -L. -lmysqlfunc -lmysqlclient#执行程序的时候报错reacher@ubun原创 2017-08-25 14:36:29 · 326 阅读 · 0 评论 -
LINUX信号量实现对公共数据的读写
0x00.信号量的作用 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore原创 2017-08-21 20:19:19 · 348 阅读 · 0 评论 -
LINUX核心思想
1.一切皆是文件原创 2017-08-21 20:18:48 · 1165 阅读 · 0 评论 -
LINUX信号注册和执行
测试环境:ubuntu 16.0编译器: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 (查看版本指令:g++ --version)以下为测试代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 //发现信原创 2017-08-21 20:18:53 · 1507 阅读 · 0 评论 -
LINUX信号发送
测试环境:ubuntu 16.0编译器: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 (查看版本指令:g++ --version)实验目的: 使用int kill(pid_t pid, int sig); 函数发送信号实验步骤:子进程发送信号,父进程接收子进程发送的信号进行处理 以下为测试代码: 1 #includ原创 2017-08-21 20:18:56 · 608 阅读 · 0 评论 -
LINUX信号-sigaction更强壮的信号注册函数
测试环境:ubuntu 16.0编译器: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 (查看版本指令:g++ --version)实验目的: 使用更强壮的linux信号注册函数 int sigaction(int signum, const struct sigaction *act,struct sigaction *o原创 2017-08-21 20:19:01 · 272 阅读 · 0 评论 -
LINUX线程简介和简单代码案例
0x00.什么是线程 是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间 0x01.为什么使用线程 在某个时间片需要同时执行原创 2017-08-21 20:19:06 · 201 阅读 · 0 评论 -
TinyXml友员类的复习
0x00. 遇到问题 TiXmlNode 不提供节点属性查询,跟进代码查看有friend class TiXmlElement; 友员类,忘记怎么玩了╮(╯▽╰)╭。 0x01. 将代码抓取出来class TiXmlNode : public TiXmlBase{friend class TiXmlDocument;friend class TiXmlElement;}c原创 2017-08-21 20:19:11 · 168 阅读 · 0 评论 -
LINUX线程同步初探
0x00.什么是线程同步 同步,又称直接制约关系,是指多个线程(或进程)为了合作完成任务,必须严格按照规定的 某种先后次序来运行0x01.案例代码 1 void* PthreadFunc(void* argc); 2 int flag_num = 1; 3 4 int main(int argc, char* argv[]) 5 { 6 pthread_t pid原创 2017-08-21 20:19:14 · 160 阅读 · 0 评论 -
单道进程
0x00 简述单道进程 所有进程一个一个排对执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现时必然的。所有这种模型在系统资源利用上及其不合理,在计算机发展历史上存在不久,大部分便被淘汰了0x01 代码实现#include #include #include #include //阻塞模型int main(int a原创 2017-09-07 05:46:19 · 253 阅读 · 0 评论