随笔分类 -  Linux

Linux 编程,普通操作知识
摘要:10.1 程序的内存布局 现代APP(应用程序)都运行在一个内存空间里,32bit系统有4GB地址空间。APP直接用32bit位地址寻址,称为平坦(flat)的内存模型。该模型中,整个内存是一个统一的地址空间,用户可以用一个32bit指针访问任意内存位置。 OS会将4GB内存空间分段,不同的段有不同 阅读全文
posted @ 2021-11-03 09:28 明明1109 阅读(333) 评论(0) 推荐(0) 编辑
摘要:1.1 从Hello World说起 本书解决什么问题? 对于最简单的C Hello World: #include <stdio.h> int main() { printf("Hello World\n"); return 0; } 程序为什么要被编译器编译了之后能运行? 编译器把C程序转化成可 阅读全文
posted @ 2021-11-01 16:31 明明1109 阅读(199) 评论(0) 推荐(0) 编辑
摘要:环境说明 Ubuntu版本: 14.04.1 x86_64 LTS g++ 版本: 4.8.4 问题 terminate called after throwing an instance of 'std::system_error' g++编译cpp源码后,运行程序出现错误提示:“terminat 阅读全文
posted @ 2021-10-27 14:25 明明1109 阅读(1743) 评论(0) 推荐(0) 编辑
摘要:VMware 12虚拟机下,安装open-vm-tools时,配置Ubuntu 14.04 LTS与Win10共享目录,执行命令$vmhgfs-fuse .host:/ /mnt/hgfs时,提示“vmhgfs-fuse: command not found” 错误。 要如何解决? 配置步骤参见vm 阅读全文
posted @ 2021-10-19 16:07 明明1109 阅读(10541) 评论(0) 推荐(0) 编辑
摘要:getline, gets, fgets都支持从标准输入读取一行字符串,那么它们有什么区别呢? 解答: gets 不推荐使用,gets(s) 等价于 fgets(s, INT_MAX, stdin),因为没有对缓冲区溢出做处理,不安全; getline 碰到EOF返回-1,fgets返回NULL; 阅读全文
posted @ 2021-09-27 18:59 明明1109 阅读(4466) 评论(0) 推荐(0) 编辑
摘要:libevent官网提供的教程无法打开,网上提供的pdf文档又没有代码,或者不够全面、详细,故从libevent-book源码编译出可阅读、查看的html文档。 环境准备 OS: Ubuntu 18x64 LTS libevent编译环境:参见libevent学习笔记之Ubuntu下搭建编译libe 阅读全文
posted @ 2021-09-20 10:31 明明1109 阅读(471) 评论(0) 推荐(0) 编辑
摘要:环境准备 名称 版本 下载/安装方式 描述 Ubuntu ubuntu 18x64 官网下载 ubuntu 官网https://ubuntu.com/download/desktop perl 最新版 apt-get 脚本解释器,编译openssl用 g++ 最新版 apt-get C++编译器 m 阅读全文
posted @ 2021-09-20 10:28 明明1109 阅读(889) 评论(0) 推荐(0) 编辑
摘要:一、环境准备 环境/软件名 版本 描述 操作系统 Win10x64 编译工具 VS2017 Community 提供交叉编译环境 https://visualstudio.microsoft.com/zh-hans/vs/community/ perl脚本解释器 ActivePerl-5.24.3. 阅读全文
posted @ 2021-09-18 14:40 明明1109 阅读(902) 评论(0) 推荐(0) 编辑
摘要:基本概念 信号量是什么? 信号量(semaphore)是一种用于不同进程间或一个给定进程的不同线程间同步手段的原语。 也就是说,信号量用于进程间,或者线程间同步的。 三种类型信号量 信号量主要有三种类型,都可以用于进程或线程间同步: Posix有名(named)信号量:使用Posix IPC名字标识 阅读全文
posted @ 2021-09-04 16:48 明明1109 阅读(881) 评论(0) 推荐(0) 编辑
摘要:基本概念 记录锁 记录上锁(record locking)是读写锁(readers-writer lock,简称rw lock)的一种扩展类型,可用于亲缘进程或无亲缘进程之间共享某个文件的读和写,常简称为记录锁。读写锁可参见这篇文章:Linux 自旋锁,互斥量(互斥锁),读写锁。 记录锁锁定的文件通 阅读全文
posted @ 2021-09-02 18:57 明明1109 阅读(1841) 评论(2) 推荐(2) 编辑
摘要:自旋锁(Spin Lock) 自旋锁类似于互斥量,不过自旋锁不是通过休眠阻塞进程,而是在取得锁之前一直处于忙等待的阻塞状态。这个忙等的阻塞状态,也叫做自旋。 自旋锁通常作为底层原语实现其他类型的锁。 适用场景: 1)锁被持有的时间短,而且线程不希望在重新调度上花费太多的成本; 2)在非抢占式内核中, 阅读全文
posted @ 2021-08-31 18:55 明明1109 阅读(1968) 评论(0) 推荐(1) 编辑
摘要:问题引入 POSIX限制和XSI限制,规定了一些系统实现必须支持的最小值,比如<limits.h>中的POSXI.1规定_POSIX_OPEN_MAX(每个进程打开文件数)最小值为20,_POSIX_PATH_MAX(路径名中的字节数,包括null 终结符)最小为256,而XSI规定_XOPEN_P 阅读全文
posted @ 2021-08-24 12:26 明明1109 阅读(284) 评论(0) 推荐(0) 编辑
摘要:问题:gethostname, gethostbyname 这2个名字相似的网络编程API,有何联系与区别? gethostname 获取主机名称(非登录用户名),其参数用于存储查询结果。gethostname 查找的是/etc/hostname文件,得到本主机名。其获得的主机名,可用于getadd 阅读全文
posted @ 2021-08-06 12:00 明明1109 阅读(1723) 评论(0) 推荐(0) 编辑
摘要:strchr,strrchr, strchrnul 定位一个字符 strchr系列函数介绍 strchr 定位一个字符在字符串中的位置。 同系列函数有,strrchr,strchrnul。 区别在于: strchr 从左向右找,第一个出现字符c的位置即为所求; strrchr 从右向左找,第一个出现 阅读全文
posted @ 2021-07-26 19:45 明明1109 阅读(3396) 评论(0) 推荐(0) 编辑
摘要:SO_RCVTIMEO, SO_SNDTIMEO介绍 套接字选项SO_RCVTIMEO: 用来设置socket接收数据的超时时间; 套接字选项SO_SNDTIMEO: 用来设置socket发送数据的超时时间; 比如,一般情况下,调用accept/connect/send/recv, 进程会阻塞,但是 阅读全文
posted @ 2021-07-24 16:56 明明1109 阅读(13316) 评论(0) 推荐(1) 编辑
摘要:线程与进程 fork子进程如何复制多线程的父进程? 考虑一个问题:父进程在fork之前,已经创建了多个线程,那么再调用fork,新建子进程具有和父进程同样数量的线程吗?是否会复制父进程的所有线程? 答案是否定的。 fork子进程只会复制调用fork的线程,不会复制父进程的其他线程。既然是复制,因而子 阅读全文
posted @ 2021-07-22 16:35 明明1109 阅读(439) 评论(0) 推荐(0) 编辑
摘要:fork 系统调用 可以通过fork系统调用创建新的进程。调用进程称为父进程,被创建的进程称为子进程。 fork函数复制当前进程,会在内核进程表中创建一个新的进程表项。新的进程表项有很多属性和原进程相同,如堆指针、栈指针、标志寄存器的值。也有许多属性被赋予新的值,如子进程PPID为原来进程PID。 阅读全文
posted @ 2021-07-21 23:40 明明1109 阅读(208) 评论(0) 推荐(0) 编辑
摘要:mktemp 创建临时文件名 创建一个独特的文件名,每次调用得到的文件名都不一样。 注意:该函数只产生文件名,并不创建文件。 #include <stdlib.h> char *mktemp(char *template); 参数 template 必须是一个字符数组,末尾6个字符必须是"XXXXX 阅读全文
posted @ 2021-07-14 11:13 明明1109 阅读(2305) 评论(0) 推荐(0) 编辑
摘要:1. 问题:Linux C如何切分字符串? java的String类有split方法,可以将字符串对象按指定字符串进行切分,返回一个数组String[],包含切分后的所有字符串。 Linux C如何对字符串进行切分呢?有没有类似函数/系统调用? 答:Linux C没有字符串类,也没有split函数, 阅读全文
posted @ 2021-07-08 14:53 明明1109 阅读(1930) 评论(0) 推荐(0) 编辑
摘要:获取当前工作目录有多种方式。 1. getcwd 获取工作目录(启动程序的目录) getcwd 可以获取当前工作目录,但不是目标程序所在目录,而是启动程序时所在的工作目录。 比如,如果shell 从工作目录/home/user启动目标程序(位于/home/user/workspace/testpro 阅读全文
posted @ 2021-06-26 20:05 明明1109 阅读(6012) 评论(0) 推荐(0) 编辑