IOT_SHUN的博客

个人技术博客

linux文件锁之单例进程

锁的合并: 若不同进程需要设置的两把锁作用范围部分或全部重叠,则先设置的读锁阻止后来设置的;先设置的写锁阻止后来的读/写锁.若同一进程先后要求设置的两把锁 (A,B)的作用范围部分或全部重叠,则在两把锁同类的情况下,它们的作用范围合并成一把锁(AUB);若两把锁不同类,则后设置的锁覆盖先设置的锁,...

2019-03-27 11:33:37

阅读数 124

评论数 0

shell脚本关闭指定程序

假设tesh.sh为需要关闭的程序名称 #!/bin/bash tmp=`ps -ef | grep test.sh| grep -v grep | awk '{print $2}'` echo ${tmp} kill -9 ${tmp}  

2018-08-29 17:58:27

阅读数 1816

评论数 0

shell监控程序内存以及程序运行状态并写入日志

KVDBDataBaseImsiRegister为监控程序的名称 LOG_NAME为日志文件名称 #!/bin/bash LOG_PREFIX="../log/KVDBDataBaseImsiRegister_" DATE_TIME=`date +%Y%m...

2018-08-29 17:54:23

阅读数 521

评论数 0

宏定义中使用do{}while(0)的好处 (转载)

#define MACRO_NAME(para) do{macro content}while(0)   的格式,总结了以下几个原因:   1,空的宏定义避免warning: #define foo() do{}while(0) 2,存在一个独立的block,可以用来进行变量定义,进...

2018-08-22 10:26:27

阅读数 78

评论数 0

AWK 输出重复的行 去掉重复的行

AWK是一个非常强大的文本处理工具。 今天尝试着去掉文件中的重复的行, 开始采用了“cat filename | sort -u" 命令, 但是这个命令有很大的缺点,改变了原来行的顺序。 用diff命令,很难查看到文件的差别。   偶然看到一个兄弟写的一个很简单的AWK命令...

2018-08-20 17:43:29

阅读数 490

评论数 0

STL set的用法(获取插入结果)

要使用set需要事先引入一个头文件   #include<set> set是一个不允许重复的集合,如果要重复可以使用multiset。   1.set的插入【set.insert();】,会返回Pair<iterator...

2018-08-10 10:04:41

阅读数 283

评论数 0

Linux中FTP服务器的搭建教程

一、查看是否安装有ftp相关的安装包 # rpm -qa | grep vsftpd //ftp的安装包就是vsftpd 查看到我的系统中没有安装相关的包,所以先把安装包装上。 # yum -y install vsftpd //这里如果没有配置yum源,可以直接用rpm的方式安装也是一...

2018-07-31 15:55:37

阅读数 1001

评论数 0

linux设置线程属性函数总结

1、初始化一个线程对象的属性 int pthread_attr_init(pthread_attr_t *attr); 返回值:若是成功返回0,否则返回错误的编号 形 参: attr 指向一个线程属性的指针 说 明:Posix线程中的...

2018-07-13 18:42:51

阅读数 445

评论数 0

文件锁和记录锁

http://blog.chinaunix.net/uid-23634108-id-2393492.html 下面介绍两种两种Linux下对文件加锁的两种方式一、文件锁思想:假设有一个文件A。创建一个加锁文件B,通过不同的进程互斥的访问此加锁文件B达到互斥的访问文件A的目的。源码如下#includ...

2018-07-13 10:21:55

阅读数 1193

评论数 0

守护进程之单实例

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal...

2018-07-13 10:13:41

阅读数 73

评论数 0

守护进程编写实例

守护进程如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其...

2018-07-13 09:31:00

阅读数 249

评论数 0

ps -aux命令

运行 ps aux 的到如下信息:root:# ps auxUSER      PID       %CPU    %MEM    VSZ    RSS    TTY    STAT    START    TIME    COMMANDsmmsp    3521    0.0    0.7   ...

2018-07-13 09:27:17

阅读数 91

评论数 0

linux线程私有数据函数(pthread_key_create )

最近做的一个项目中,有这么个需求,系统中使用多线程技术,每个线程访问redis,希望每个线程来保存对redis的一份长链接,而不是每个请求建立一次链接。如果在线程启动之前建立好链接,然后传到线程的私有数据中,可以实现。可是系统的框架封装的实现,无法传入数据,这时可以采用线程的私有数据技术进行储存和...

2018-07-10 18:24:48

阅读数 116

评论数 0

linux之errno与线程安全

在linux或者unix环境中,errno是一个十分重要的部分。在调用的函数出现问题的时候,我们可以通过errno的值来确定出错的原因,这就会 涉及到一个问题,那就是如何保证errno在多线程或者进程中安全?我们希望在多线程或者进程中,每个线程或者进程都拥有自己独立和唯一的一个 errno,这样就...

2018-07-10 14:18:09

阅读数 470

评论数 0

进程通信--mmap内存共享

共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通...

2018-07-10 11:41:36

阅读数 118

评论数 0

多线程中使用信号机制 pthread_sigmask()

在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号。它完全是异步的(我们完全不知到信号会在进程的那个执行点到来!)。然而信号处理函数的实现,有着许多的限制;比如有一些...

2018-07-09 16:50:44

阅读数 116

评论数 0

Linux进程栈和线程栈

参考资料:http://blog.csdn.net/xhhjin/article/details/7579145总结:    1、进程的栈大小是在进程执行的时刻才能指定的,即不是在编译的时候决定的,也不是在链接的时候决定的    2、进程的栈大小是随机确定的至少比线程栈要大,但是不到线程栈大小的2...

2018-07-06 12:38:41

阅读数 114

评论数 0

线程分离状态的理解

在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。       ...

2018-07-06 09:29:57

阅读数 89

评论数 0

_exit和exit的区别

在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中...

2018-07-05 11:59:17

阅读数 67

评论数 0

fork与vfork的区别(注:vfork子进程不能return)

1.vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。2.fork要拷贝父进程的进程环境;而vfork则不需要完全拷贝父进程的进程环境,在子进程没有调用exec和exit之前,子进程与父进程共享进...

2018-07-05 11:40:54

阅读数 91

评论数 0

提示
确定要删除当前文章?
取消 删除