![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux篇
ndzjx
喜欢编程
展开
-
kvm snapshot 迁移
【代码】kvm snapshot 迁移。原创 2023-02-10 12:22:52 · 246 阅读 · 0 评论 -
linux dll 调用
// r.c#include <stdio.h>// gcc -shared r.c -o r.so -m32char* a(double d) { printf("r.c: %f\n", d * d); return "hello";}// runso.c#include <stdio.h>#include <dlfcn.h...原创 2020-01-03 19:59:12 · 2679 阅读 · 0 评论 -
打印符号表
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <link.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include...转载 2019-11-12 15:47:35 · 561 阅读 · 0 评论 -
读取ELF文件
/* elfparse.c - gcc elfparse.c -o elfparse */#include <stdio.h>#include <string.h>#include <errno.h>#include <elf.h>#include <unistd.h>#include <stdlib.h>#...原创 2019-11-12 15:42:55 · 740 阅读 · 0 评论 -
Linux x86 64位内存管理
地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>PA...转载 2019-11-04 16:43:32 · 1987 阅读 · 0 评论 -
linux子进程知道父进程退出的解决方案
在实际开发中难免会处理进程间的关系,最常见的是父子进程的相互监督。父进程等待子进程,或者自进程知道父进程运行是否结束,以方便释放资源。一、关于进程进程是操作系统进行资源分配和调度的基本单位。linux系统使用fork创建进程,进程pid 0是swapper进程,进程pid 1是init进程,init进程是所有普通用户进程的父进程。fork在 <unistd.h>文件中定义...转载 2019-10-15 13:44:51 · 973 阅读 · 0 评论 -
linux进程间通信-管道
原创:https://blog.csdn.net/ndzjx/article/details/89001324当一个进程连接数据流到另一个进程是,我们使用术语管道(pipe),通常把一个进程的输出通过管道连接到另一个进程的输入。最简单的在两个程序间传递数据的方法是使用popen/pclose函数,pclose将等待该进程的结束。如果调用pclose之前执行了wait,即进程表中...原创 2019-04-03 18:01:35 · 284 阅读 · 0 评论 -
linux_POSIX线程
原创:https://blog.csdn.net/ndzjx/article/details/88965748线程:在一个程序中的多个执行路线。 更准确一点:线程是一个进程内部的一个控制序列。线程有关的函数库,函数名都以pthread_开头,必须定义宏_REENTRANT,包含头文件pthread.h,编译时要用选项-lpthread来链接线程库。_REENTRANT...原创 2019-04-02 10:56:39 · 81 阅读 · 0 评论 -
linux进程和信号
原创:https://blog.csdn.net/ndzjx/article/details/88943008进程:“一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源”进程之间会共享程序代码和系统函数库。PID为1,为特殊进程init保留,负责管理其他进程。系统根据进程的nice值来决定优先级。值越大优先级越低。(ps -l ) NI列启...原创 2019-04-01 10:35:45 · 160 阅读 · 0 评论 -
GCC在C语言中内嵌汇编 asm __volatile__
还可以参考:https://www.cnblogs.com/fanzhidongyzby/p/3654855.html在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例:...转载 2019-04-05 11:03:07 · 203 阅读 · 0 评论 -
linux套接字+select
原创:https://blog.csdn.net/ndzjx/article/details/89032071bind 给套接字命名(把套接字绑定到服务器的地址和端口上),要让通过socket调用创建的套接字可以被其他进程使用,服务器程序就必须给套接字命名。listen 创建一个队列并将其用于存放来自客户的进入连接accept 会创建一个与原有命名套接字不同的新套接字,用于与特定...原创 2019-04-04 18:23:53 · 497 阅读 · 0 评论 -
linux-IPC:信号量/共享内存/消息队列
原创:https://blog.csdn.net/ndzjx/article/details/89018951进程间通信的机制,三种:1:信号量(不同于线程POSIX信号量,这里是进程间)2:共享内存3:消息队列信号量:二进制信号量/通用信号量#include <sys/sem.h>int semctl(int sem_id, int sem_num,...原创 2019-04-04 12:09:44 · 267 阅读 · 0 评论 -
gdb调试记录
原创:https://blog.csdn.net/ndzjx/article/details/889018621:明确需求2:设计程序(如何构造程序,什么样的数据结构,它如何在程序中使用)3:调试+优化gdb 为了调试程序,在编译时需要加上一个或多个特殊的编译器选项,这些选项的作用是让编译器在程序中添加额外的调试信息,包括各种符号和源代码行号。-g标志是调试性编译时...原创 2019-03-29 21:06:08 · 173 阅读 · 0 评论 -
makefile记录
原创:https://blog.csdn.net/ndzjx/article/details/88896170makefie默认make命令 会找makefile或Makefile, 如果自己定义了不同的文件名,执行时用:make -f mymakefile$? 列出当前目标所依赖的文件列表中比当前目标文件还要新的文件。$@ 当前目标文件$< 当前依...原创 2019-03-29 16:28:13 · 152 阅读 · 0 评论 -
linux环境getopt等
原创:https://blog.csdn.net/ndzjx/article/details/88808134一:解析命令行getopt#include<unistd.h>int getopt(int argc, char *const argv[], const char *optstring);extern char *optarg;extern int opt...原创 2019-03-25 22:36:06 · 114 阅读 · 0 评论 -
linux文件操作知识点
ln 命令在不同目录中创建指向同一个文件的连接/dev/console 系统控制台/dev/tty 进程的控制终端(键盘和显示器,或键盘和窗口)的别名/dev/null 空设备, cp命令可以把它用作拷贝空文件的源文件。而touch作用是来改变文件的修改时间,文件不存在才创建,但并不会清空文件。访问设备驱动程序的底层函数(open, read, write, close, i...原创 2019-03-21 17:25:42 · 221 阅读 · 0 评论 -
Linux Shell知识点
一:gcc -c 编译grep EXIT_ *.har crv libfoo.a bill.o fred.o 归档ranlib libfoo.a 某些系统需要为函数库生成一个内容表nm libfoo.a 查看目标文件/函数库/可执行文件里包含的函数ldd test 查看程序需要的共享库二:Shell进程名ps -xo comm | sor...原创 2019-03-20 10:21:36 · 220 阅读 · 0 评论