
Linux 系统编程
linux
YanWenCheng_
日常总结
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux环境变量解析
Linux环境变量配置全攻略 - 悠悠 (uusama.com)转载 2021-09-29 10:40:18 · 152 阅读 · 0 评论 -
验证当前机器是大端还是小端
方法一 int data = 0x12345678; char *cp = (char*)&data; //取4字节中的低地址字节 if(*cp == 0x78) cout << "little" << endl; if(*cp == 0x12) cout << "big" << endl;原创 2021-09-27 11:48:56 · 157 阅读 · 0 评论 -
更换Ubuntu软件源
由于Ubuntu官方软件源太慢了,换回国内的软件源这样快很多。1. 备份源配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2. 修改配置文件sudo gedit /etc/apt/sources.list覆盖sources.list配置文件的内容:#清华大学软件源deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe m原创 2021-05-10 15:58:19 · 244 阅读 · 0 评论 -
线程同步------信号量
信号量:进化版的互斥锁(1–N)主要应用函数:(1)sem_init(2)sem_destroy;(3)sem_wait(4)sem_trywait;(5)sem_timewait;(6)sem_post;sem_wait:相当于pthread_mutex_lock,(1)信号量>0时–;(2)信号量=0时,阻塞;sem_post:相当于pthread_mutex_unlo...原创 2020-01-27 06:28:48 · 529 阅读 · 0 评论 -
进程同步--------文件锁的使用
文件锁:只能在进程同步使用,因为线程共享文件描述符fcntl函数:获取,设置文件访问控制属性;参数2: F_SETLK(struct flock*) 设置文件锁(trylock)//非阻塞F_SETLKW(strcut flock *)设置文件锁(lock)//阻塞F_GETLK(struct flock *)获取文件锁参数3:struct flock{short l_type;...原创 2020-01-27 04:38:42 · 5444 阅读 · 3 评论 -
进程同步--------互斥锁的使用
互斥量(互斥锁)主要应用函数: (1)pthread mutexattr_t mattr //用于定义mutex锁的属性(2)pthread_mutexattr_init;//初始化一个属性对象(3)pthread_mutexattr_destroy;(4)pthread_mutexattr_setpshared //修改mutex的属性;线程锁:PTHREAA_PR...原创 2020-01-27 02:42:06 · 710 阅读 · 0 评论 -
线程同步-----读写锁的使用
读写锁;(写独占,读共享; 写锁优先级高)主要应用函数: (1)pthread_rwlock_init(2)pthread_rwlock_rdlock(3)pthread_rwlock_wrlock(4)pthread_rwlock_tryrdlock(5)pthread_rwlock_trywrlock(6)pthread_rwlock_unlock(7)pthread_rwloc...原创 2020-01-26 00:41:01 · 217 阅读 · 0 评论 -
线程同步----条件变量的使用
.条件变量:本身不是锁,但可以造成线程阻塞,通常与互斥锁配合使用;主要应用函数: (1)pthread_cond_init* (2)pthread_cond_wait (&cond,&mutex);三个作用:1. 阻塞等待cond条件变量被唤醒;2. 阻塞等待时,同时释放互斥锁;(1,2两部为一个原子操作)3. 当被唤醒时,wait返回解除阻塞并且重新获取锁p...原创 2020-01-26 00:19:17 · 286 阅读 · 0 评论 -
线程同步--------读写锁的使用
读写锁-------------指的是一个锁,而不是两个锁特别重要12字:写独占,读共享; 写锁优先级高主要应用函数: (1)pthread_rwlock_init ------初始化(2)pthread_rwlock_rdlock ----读锁(3)pthread_rwlock_wrlock ----写锁(4)pthread_rwlock_tryrdlock —try写锁(5)p...原创 2020-01-25 21:36:37 · 274 阅读 · 0 评论 -
线程同步--------互斥锁(互斥量)以及他的死锁问题
互斥锁(互斥量)主要应用函数: (1)pthread_mutex_init() ---------------------mutex =1(2)pthread_mutex_lock():阻塞等待锁(3)pthread_mutex_trylock():非阻塞且有返回;成功 0;失败返回 错误号:EBUSY正在被其他程序使用(4)pthread_mutex_unlock()(...原创 2020-01-24 00:00:50 · 339 阅读 · 0 评论 -
线程分离
线程分离什么是线程分离简单来讲,线程分离就是当线程被设置为分离状态后,线程结束时,它的资源会被系统自动的回收,而不再需要在其它线程中对其进行 pthread_join() 操作。为什么线程分离在我们使用默认属性创建一个线程的时候,线程是 joinable (即主线程和子线程时结合的)的。 joinable 状态的线程,必须在另一个线程中使用 pthread_join() 等待其结束,如果一...原创 2020-01-21 21:59:59 · 2204 阅读 · 0 评论 -
线程属性
我们曾提到在调用 pthread_create 函数时可以指定线程属性,还可以用 pthread_detach 函数来分离线程,以让操作系统在线程退出时收回它所占用的资源。现在就是深入讨论这个话题的时候。可以使用 pthread_attr_t 结构修改线程默认属性,并把这些属性与创建的线程联系起来。#include <pthread.h>int pthread_attr_init...原创 2020-01-21 21:33:39 · 285 阅读 · 0 评论 -
线程的回收
*void pthread_exit(void retval);:单个线程推出对比:exit() :进程退出区别以下三者:(1) exit():整个进程退出;(2)pthread_exit():当前线程退出;(3) return : 返回调用者那里去;**int pthread_join(pthread_t thread, void retval): 阻塞等待线程退出对比: wai...原创 2020-01-20 22:51:47 · 261 阅读 · 0 评论 -
线程的创建和多线程的创建
线程的使用(与进程对比记忆)pthread_self():获取线程ID / getpid():获取进程IDpthread_create:创建线程 / fork(): 创建进程(注意:其中线程执行函数是,函数地址的指针) ***int pthread_create(pthread_t *thread, const pthread_attr_t *attr, ...原创 2020-01-20 00:06:46 · 200 阅读 · 0 评论 -
守护进程-----简介与实现
1.概述守护进程是一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。用户使守护进程独立于所有终端是因为,在守护进程从一个终端启动的情况下,这同一个终端可能被其他的用户使用。例如,用户从一个终端启动守护进程后退出,然后另外一个人也登录到这个终端。用户不希望后者在使用该终端的过程中,接收到守护进程的...原创 2020-01-17 01:17:01 · 352 阅读 · 0 评论 -
静态库和动态库的优缺点
一、库的类型(一) 在windows中.dll 动态库.lib 静态库库即为源代码的二进制文件(二) 在linux中.so 动态库.a 静态库(三) 静态库和动态库的优缺点我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中...原创 2020-01-15 19:54:45 · 566 阅读 · 0 评论 -
Linux--信号机制
信号机制(信号屏蔽字,未决信号集在进程的PCB中)信号四要素:信号编号,信号名称,信号默认执行动作,信号事件。(信号编号和名称:看csdn常用信号一览表)## 标题信号的5中产生方式: (1)终端按键产生信号:Ctrl+c(2号信号),Ctrl+z(20),Ctrl+\(3); (2)硬件异常产生信号:除0操作(8),非法访问内存(11) (3)kill函数/命令产生信号 kill命...原创 2020-01-15 00:32:54 · 325 阅读 · 0 评论 -
Linux常用信号一览表
SIGHUP:本信号在用户终端结束时发出,通常是在终端的控制进程结束时,通知同一会话期内的各个作业,这时他们与控制终端不在关联。比如,登录Linux时,系统会自动分配给登录用户一个控制终端,在这个终端运行的所有程序,包括前台和后台进程组,一般都属于同一个会话。当用户退出时,所有进程组都将收到该信号,这个信号的默认操作是终止进程。此外对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。...原创 2020-01-11 22:00:17 · 353 阅读 · 0 评论 -
IPC---共享内存的使用
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<sys/mman.h> 4 #include<unistd.h> 5 #include<fcntl.h> 6 #include<string.h> 7 8 int main() 9 {...原创 2020-01-11 13:15:40 · 202 阅读 · 0 评论 -
IPC(进程间通信)----管道
IPC方法(进程间通信)(1)管道(使用最简单):pipe,匿名管道,不可反复读 / fifo 有名管道,可以反复读(用于非血缘关系进程间通信) 原理:内核缓冲区机制,环形队列形式实现 局限性: 1.进程不能自己读自己写 2.数据不能反复读 3.单向通信,半双工 4.只能用与有公共的祖先进程间(2)信号(开销最小)(3)共享内存(无血缘关系):mmap----...原创 2020-01-10 20:04:50 · 240 阅读 · 0 评论 -
exec函数族
exec函数族(重点个)execlp:借助PATH环境变量 (执行系统命令或者函数用这个)execl:路径加程序名 (用户自定义的可执行程序)int execl(const char *path, const char *arg, ...)int execv(const char *path, char *const argv[])int execle(const cha...原创 2020-01-10 19:50:14 · 209 阅读 · 0 评论 -
Linux系统编程基础知识
程序:编译好的二进制文件,在磁盘上,不占用系统的资源(CPU,内存,设备,打开的文件,锁等)进程:与操作系统原理联系紧密,进程是活跃的程序或者正在运行的程序,占用系统资源,在内存中执行程序是剧本,进程是戏1.PCB的 task_struct 结构(1)pid_t类型的pid(2)进程的状态:就绪态,运行态,挂起态,终止态(3)进程切换时的需要保存和回复的一些寄存器内容(4)描述虚拟地...原创 2020-01-10 19:37:27 · 256 阅读 · 0 评论