
Linux
tsh123321
这个作者很懒,什么都没留下…
展开
-
Ubuntu date命令修改时间失败解决方法
1.在使用date -s "2018-4-2 11:21:45"修改时间后系统时间没有变化ubuntu:~$ sudo date -s "2018-4-2 11:21:45"Mon Apr 2 11:21:45 PDT 20182.date命令查看时间还是之前的时间ubuntu:~$ dateSun Apr 1 22:36:08 PDT 20183.需要使用下面的方法ubuntu:~$ sud...原创 2018-04-02 13:49:26 · 7394 阅读 · 2 评论 -
线程同步注意事项
互斥器(mutex)互斥器主要是为了保护共享数据的,保证同一时刻只有一个线程可以操作用RAII手法封装mutex(创建、销毁、加锁、解锁)只用非递归的mutex(就是不可重入的mutex)不手动调用lock和unlock函数,参照第一点的方式在每次构造MutexLockGuard的时候,思考调用栈上已经持有的锁,防止加锁顺序不同导致死锁不使用跨进程的mutex,进程间通信尽量只用TC...原创 2019-04-02 11:20:18 · 322 阅读 · 0 评论 -
Ubuntu挂载网络文件系统NFS
1.sudo apt-get install nfs-kernel-server 安装nfs。2.sudo mkdir /home/share/nfs 建立nfs共享文件夹。 执行 chmod 777 /home/share/nfs(以防出现权限问题)3.sudo vi /etc/exports 配置nfs。4.在文档的最后一行加入/home/song/nfs *(rw,s...原创 2019-04-03 08:27:49 · 1151 阅读 · 0 评论 -
两种IO多路复用方式对比Reactor and Proactor
两种IO多路复用方案:Reactor and Proactor概述一般情况下,I/O 复用机制需要事件分享器(event dispatch)。事件分享器的作用,即将那些读写事件源分发给各读写事件的处理者,就像送快递的在楼下喊: 谁的什么东西送了, 快来拿吧。开发人员在开始的时候需要在分享器那里注册感兴趣的事件,并提供相应的处理者(event handlers),或者是回调函数; 事件分享器在适...原创 2019-04-03 08:39:08 · 343 阅读 · 0 评论 -
TCP连接数和文件描述符耗尽分析
client最大tcp连接数client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short,因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,...原创 2019-04-03 11:11:43 · 3887 阅读 · 0 评论 -
git命令使用记录
1.创建版本库初始化一个Git仓库,使用git init命令。添加文件到Git仓库,分两步:第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;第二步,使用命令git commit -m “说明”,完成。2.时光机穿梭要随时掌握工作区的状态,使用git status命令。如果git status告诉你有文件被修改过,用”git diff 文件名”可以查看修改内容。...原创 2019-04-03 13:54:25 · 178 阅读 · 0 评论 -
hisiv300编译报错修改
现象:hisiv300编译过程中的错误:提示arm-hisiv300-linux-gcc: command not found或不是文件和目录原因:这是因为宿主机是64 位 而交叉编译器是针对32位的开发板制作的。所以要安装对应的32位库。我的linux宿主机是ubuntu 16.04 64位。安装命令:sudo apt install lib32z1-dev参考链接及其他错误:http...原创 2019-04-03 14:01:06 · 286 阅读 · 0 评论 -
Linux 2.6 以上版本timerfd定时器的实现
Linux 自 2.6 开始,可以使用timerfd来管理定时器提供的基于文件描述符的定时器接口#include <sys/timerfd.h>int timerfd_create(int clockid, int flags);int timerfd_settime(int fd, int flags, const struct itimerspec *new_value...原创 2019-04-16 16:20:44 · 255 阅读 · 0 评论 -
gdb调试strip过的程序、以及strip和en-strip使用
概述通常公司发布的可执行程序和动态共享库(.SO)里面的符号表都被移除了,所以每次遇到core dump的时候,都需要将符号表导入到/usr/lib/debug目录下。一直没弄明白为啥是这个目录,能不能是其他目录,这篇文章探索一下相关的知识,做个记录。我们要给我们生成的可执行文件和.SO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们还希望万一出事...原创 2019-04-30 13:58:09 · 4653 阅读 · 1 评论 -
操作系统知识
进程与线程对于有线程系统:进程是资源分配的独立单位线程是资源调度的独立单位对于无线程系统:进程是资源调度、分配的独立单位进程之间私有和共享的资源私有:地址空间、堆、全局变量、栈、寄存器共享:代码段,公共数据,进程目录,进程 ID线程之间私有和共享的资源私有:线程栈,寄存器,程序寄存器共享:堆,地址空间,全局变量,静态变量linux使用的进程间通信方式管道...原创 2019-04-02 11:19:36 · 234 阅读 · 0 评论 -
使用pstack和gdb调试进程
使用pstack和gdb调试进程1. pgrep使用pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。用法:ps 参数选项 程序名常用参数-l 列出程序名和进程ID;-o 进程起始的ID;-n 进程终止的ID举例:pgrep css159782. pstackpstack 是 Linux(比如 Red Hat Linux 系统、...原创 2019-04-02 11:14:46 · 961 阅读 · 0 评论 -
Linux和windows下命令使用
Linux下命令1.查看进程idps -elf | grep name2.显示进程下所有线程方法一:PS在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为的进程创建的所有线程。ps -T -p 方法二: Toptop命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以...原创 2019-04-02 11:13:06 · 463 阅读 · 0 评论 -
ubuntu 16.04安装 perf
安装tsh@tsh-virtual-machine:~/codeTest/learnPerf$ perf stat ./testThe program 'perf' is currently not installed. You can install it by typing:sudo apt install linux-tools-commontsh@tsh-virtual-mach...原创 2019-03-04 10:29:49 · 2018 阅读 · 1 评论 -
gdb调试info threads只能显示一个进程问题
gdb调试info threads只能显示一个进程问题问题:在一个Linux环境中(dm81XX),调试多线程程序不正常,info threads看不到多线程的信息。查看过程:1.先用命令maintenance print target-stack看了一下target的装载情况,发现target"multi-thread"没有被装载,用GDB对GDB进行调试,发现在 函数check_for...原创 2019-04-01 15:09:29 · 1891 阅读 · 0 评论 -
java调用C++库崩溃排查
java调用C++库崩溃排查问题:java通过JNI方式调用C++库文件,运行时崩溃1.首先生成core文件/或者gdb attach到进程上//不限制core文件大小ulimit -c unlimited//core文件带pid和进程名 core在当前目录echo "core_%e_%p" > /proc/sys/kernel/core_pattern2.gdb查看core...原创 2019-04-01 15:11:33 · 2294 阅读 · 0 评论 -
Linux 线程函数
Linux 线程函数1.头文件#include<pthread.h>2.线程函数int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);int pthread_join (pthread_t tid, void ** status);...原创 2019-04-01 15:13:47 · 997 阅读 · 0 评论 -
PID和TID之间的区别
PID和TID之间的区别疑问:标准答案是PID用于进程,而TID用于线程。但是,我已经看到一些命令可以相互使用它们。例如,htop有一个PID列,其中显示了相同进程的线程的PID(具有不同的值)。那么PID什么时候代表线程或进程?解释首先:pid是进程标识符; tid是线程标识符。但实际上,内核并没有真正区分它们:线程和进程很像,但它与同一组的线程共享一些东西(内存,fds …)。...原创 2019-04-01 15:17:33 · 18688 阅读 · 0 评论 -
select在异步(非阻塞)connect中的使用
select在异步(非阻塞)connect中的使用socket编程中非阻塞connet调用的处理可以借助select来解决,大致步骤如下:1. 将打开的socket设为非阻塞的Windows设置方式 unsigned long unblock = 1; ret = ioctlsocket(tSock, FIONBIO, (unsigned long *)&unbloc...原创 2019-04-01 15:18:58 · 1394 阅读 · 0 评论 -
C++成员函数和成员变量存储说明
成员函数和成员变量存储说明C++中类的成员函数和成员变量的存储方式是不一样的。比如定义对象是系统会为对象分配存储空间,其中只为成员变量分配了存储空间,而成员函数则存放在公共的代码段中。如下图所示:因此可以看出,每个对象占用的存储空间只是该对象的数据部分(虚函数指针和虚基类指针也属于数据部分)所占用的存储空间,而不包括成员函数所占用的存储。测试代码代码如下,以下代码的输出结果是什么?cl...原创 2019-04-02 11:11:50 · 1410 阅读 · 0 评论 -
编译错误: call of overloaded ‘isnan(double&)’ is ambiguous isnan(x);
C++11编译报错测试#include <stdlib.h>#include <cmath>#include <stdio.h>using namespace std;int main(int argc, char** argv){ double number = 0; if (isnan(number)) { ...原创 2019-08-22 16:12:22 · 3206 阅读 · 0 评论