linux学习
weixin_43903378
这个作者很懒,什么都没留下…
展开
-
linux线程学习初步02
杀死线程的函数int pthread_cancel(pthread_t thread);参数介绍: 需要输入的tid返回值: 识别返回 errno 成功返回 0被杀死的线程,退出状态值为一个#define PTHREAD_CANCELED((void *)-1)代码案例:#include <stdio.h>#include <stdlib.h>...原创 2020-02-21 15:21:13 · 66 阅读 · 0 评论 -
linux 线程学习初步01
线程的概念进程与线程内核实现 通过函数clone实现的ps -Lf pidLinux内核线程实现原理同一个进程下的线程,共享该进程的内存区, 但是只有stack区域不共享。线程共享资源a.文件描述符表b.每种信号的处理方式c.当前工作目录d.用户id和组id线程非共享资源a.线程idb.处理器现场和栈指针(内核栈)c.独立的栈空间(用户空间栈)d....原创 2020-02-20 10:32:32 · 73 阅读 · 0 评论 -
linux守护进程
先了解 linux系统中 会话的概念会话是进程组的更高一级,多个进程组对应一个会话。会话是一个或多个进程组的集合创建一个会话需要注意以下5点事项:a. 调用进程不能是进程组组长, 该进程变成新会话首进程(session header)b. 该进程成为一个新进程组的组长进程。c. 新会话丢弃原有的控制终端,该会话没有控制终端d. 该调用进程是组长进程, 则出错返回e. 建立新会话...原创 2020-02-18 10:56:08 · 92 阅读 · 0 评论 -
linux进程利用SIGCHLD信号,来实现父进程回收子进程
子进程执行完毕后,会向父进程发出 SIGCHLD信号 , 这段代码实现的就是i,父进程接受到子进程 发出的SIGCHLD信号,实现对子进程进行回收,从而避免僵尸进程#include <stdio.h>#include <unistd.h>#include <time.h>#include <signal.h>#include <sys...原创 2020-02-17 18:41:36 · 2007 阅读 · 0 评论 -
linux信号捕捉
信号捕捉,防止进程意外死亡signal函数man signal#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);参数介绍;signum 要捕捉的信号handler 要执行的捕捉函数指针,函数声明 voi...原创 2020-02-16 21:05:07 · 168 阅读 · 0 评论 -
linux 与信号集操作相关的函数
与信号集操作相关的函数#include <signal.h>清空信号集 全都为0int sigemptyset(sigset_t *set);填充信号集 全都为1int sigfillset(sigset_t *set);添加某个信号到信号集int sigaddset(sigset_t *set, int signum);从集合中删除某个信号int sig...原创 2020-02-16 20:23:59 · 92 阅读 · 0 评论 -
linux信号学习02
未决信号集与阻塞信号集(信号屏蔽字)阻塞信号集: 将某些信号加入集合,对他们设置屏蔽,当屏蔽x信号后,再收到该信号,该信号的处理将推后(解除屏蔽后)未决信号集:a. 信号产生,未决信号集中描述该信号的位立刻翻转为1,表信号处于未决状态。当信号被处理对应位翻转回为0。这一时刻往往非常短暂。b. 信号产生后由于某些原因(主要是阻塞)不能抵达。这类信号的集合称之为未决信号集。在屏蔽解除前,信...原创 2020-02-13 21:47:19 · 72 阅读 · 0 评论 -
linux 进程通信子mmap
mmap 文件–内存映射函数原型 #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);参数介绍:add 传 NULLlength 映射区的长度prot PROT_READ 可读 PROT_WRITE可写fla...原创 2020-02-11 08:45:15 · 79 阅读 · 0 评论 -
Linux 进程通信之FIFO
FIFO通信(first in first out)FIFO 有名管道,实现无血缘关系进程通信。----创建一个管道的伪文件a.mkfifo testfifo 命令创建b.也可以使用函数int mkfifo(const char *pathname, mode_t mode);----内核会针对fifo文件开辟一个缓冲区,操作fifo文件,可以操作缓冲区,实现进程间通信–实际上就是文...原创 2020-02-10 15:54:08 · 349 阅读 · 0 评论 -
linux 进程通信 pipe
pipe函数管道函数man pipe#include <unistd.h>int pipe(int pipefd[2]); 参数介绍: pipefd读写文件描述符,0-代表读, 1-代表写父子进程实现pipe通信,实现ps aux | grep bash 功能经常出现的问题:父进程认为写端存在,就有可能还有人发送数据,继续等待所以尽量保持管道数据的流向保持一...原创 2020-02-10 13:49:05 · 75 阅读 · 0 评论 -
linux 系统函数调用:open close read write lseek
open函数查看函数原型 man 2 open#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t...原创 2020-02-09 22:03:40 · 253 阅读 · 0 评论 -
linux c++ 多进程初步01
fork函数fork函数ps ajx 这个命令可以查看进程与进程之间的血缘关系kill 给进程发送一个信号 SIGKILL 9号信号 kill -SIGKILL pik 杀死进程进程共享子进程会复制父进程的几乎所有信息:子进程复制父进程用户空间所有数据;子进程复制父进程内核空间PCB中绝大多数数据;exec函数族使用exec不会产生新的进程...原创 2020-02-05 16:13:20 · 129 阅读 · 0 评论 -
linux 系统课程-进程控制01
进程的状态转化进程拥有四种状态(切换),他们之间的关系如图运行 挂起 终止 就绪内存管理单元 MMU (Memory Management Unit)mmu 负责a. 虚拟内存与物理内存的映射b. 设置内存的访问级别pcb进程控制块环境变量环境变量在内存虚拟空间接近3G那个地方linux 通过env命令查看linux获取环境变量的api函数原...原创 2020-02-05 15:12:37 · 78 阅读 · 0 评论 -
linux gcc 制作动态库
编译与位置无关的代码,生成.o,关键参数 -fPICcreatelibso目录下├── cheng.c├── chu.c├── head│ └── test.h├── jia.c└── jian.cgcc -fPIC -c *.c -I ./head在createlibso目录下生成 与位置无关的.o文件├── cheng.c├── cheng.o├── ch...原创 2020-02-02 15:19:39 · 139 阅读 · 0 评论 -
Linux gcc 制作静态库01
制作步骤编译为 .o 文件createliba目录下结构为├── head│ └── test.h├── jia.c├── jian.c├── cheng.c├── chu.c这4个源文件,提供 + - * /算数运算, 使用了 head目录下 test.h文件先编译为.o文件gcc -c *.c -I./headlscheng.c cheng.o chu....原创 2020-02-01 20:30:16 · 84 阅读 · 0 评论 -
linux gcc 简单使用记录01
大体编译流程gcc 参数:I 包含头文件路径L 包含库文件路径l 库名 比如libxxx.so 对应着 -lxxx(掐头去尾)O 优化选项 1,3W 警告 all 显示更多的c 编译成 .o 文件(二进制)E 输出到标准输出,宏替换,头文件展开S 编译成汇编lstdc++ 编译C++代码o 指定目标文件g gdb调试使用例如:编译C代码gcc add.c ...原创 2020-02-01 19:21:27 · 140 阅读 · 0 评论 -
linux 用户管理以及其他命令
设置用户组sudo groupadd test 增加test用户组创建用户选项:-s 指定shell-g 指定组-d 用户家目录-m 家目录不在时,自动创建sudo useradd -s /bin/bash -g test -d /home/newuser -m newuser设置密码sudo passwd newuser切换用户su xiaowan...原创 2020-02-01 16:41:00 · 66 阅读 · 0 评论 -
linux ubuntu 软件安装的三种方式
apt-get自动安装软件,解决依赖关系sudo apt-get update 更新源源在 /etc/apt/sources.list 文件中sudo apt-get install softwarenamesudo apt-get remove softwarenamedpkg 根据deb安装包来安装软件dpkg 是“Debian Packager ”的简写sudo...原创 2020-02-01 16:05:08 · 367 阅读 · 0 评论 -
linux 常用命令05 常用的压缩与解压缩文件
zip/unzip ----zip格式使用方式:zip -r 压缩包名 原材料-r代表递归子目录原材料可以有多个例如:zip -r bb.zip bb hello对应的解压缩:unzip bb.zip.gz格式的压缩包 gzip和gunziptar 最常用打包工具 .tar.gztar相应参数介绍-c 压缩文件 -x 解压文件-v 显示信息-f 指定压缩包名...原创 2020-02-01 15:25:48 · 73 阅读 · 0 评论 -
linux 常用命令04 查找和检索
先说一下 文件的基本类型文件类型 l 符号链接文件(软连接) b 块设备 (磁盘文件) c 字符设备 p 管道设备(pipe) s 本地套接字(网络编程) - 普通文件 用find命令的时候,普通文件 用f表示 d 目录文件 find命令find dir(要查找的目录) [option] 内容a. ...原创 2020-02-01 11:58:08 · 127 阅读 · 0 评论 -
linux 常用命令03--修改文件的权限与归属
chmod 命令改变文件权限第一种:chmod [u|g|o|a] [+|-] [r|w|x] filename比如: chmod u+x filename 给所属用户增加执行的权限第二种:给a.out 文件,所属用户可读可写,所属组可读可写,其他的读chmod 0664 a.out注意文件夹要有可执行权限,否则这个文件夹就不可访问chown 与 chgro 命令(修改...原创 2020-01-31 21:37:11 · 251 阅读 · 0 评论 -
linux 常用命令02--文件属性 以及软硬链接
文件属性和用户用户组通过ls-l显示文件详细信息drwxrwxr-x 2 user usergroup 4096 10月 30 20:55 stu1drwxrwxr-xd代表目录文件, -代表普通文件rwx rwx r-x归属用户的权限 归属组的权限 其他用户的权限 权限位数字表示法(8进制数)rwx 111 ...原创 2020-01-31 20:54:14 · 118 阅读 · 0 评论 -
linux 常用命令01
/bin/bash 就是linux默认的shellls命令ls -a 显示所有文件 包含隐藏文件ls -R 递归显示子目录ls -l 显示详细信息ls -lrt 按照时间排序,显示文件信息配合通配符使用ls *.c *匹配任意多个字符ls xx.? 匹配任意一个字符cd 命令cd - 为切换到上次目录cd 回到家目录的四种方式a. cd /ho...原创 2020-01-31 17:54:59 · 100 阅读 · 0 评论