Linux&&Unix
文章平均质量分 57
万木春《Linux 后端开发工程实践》
这个作者很懒,什么都没留下…
展开
-
GDB 调试子进程
用gdb调试多进程的程序会遇到困难,gdb只能跟踪一个进程(默认是跟踪父进程),而不能同时跟踪多个进程,但可以设置gdb在fork之后跟踪父进程还是子进程set follow-fork-mode child命令设置gdb在fork之后跟踪子进程(set follow-fork-m转载 2011-07-21 19:06:49 · 11775 阅读 · 0 评论 -
调用系统函数pthread_cancel取消进程的其他线程
调用系统函数pthread_cancel取消进程的其他线程 先在主线程中创建一子线程,在子线程中一直输出运行了多少时间,在主进程监控,当发现子线程已经运行10秒的时候,取消子线程。Demo代码如下:注意编译的时候要加 -lpthread 选项,即unix原创 2011-10-10 23:04:13 · 1731 阅读 · 0 评论 -
进程与线程的区别
进程与线程的关系与区别1、进程是系统分配资源的基本单位,而线程是系统调度的基本单位。2、进程至少由一个线程组成,线程依赖于进程而存在。3、线程相对进程,并发性好,CPU资源利用率高,能改善系统响应时间和吞吐量。4、由于线程涉及到共享资源访问一致性问题,从而编程复杂度也高。原创 2012-12-24 21:10:20 · 784 阅读 · 0 评论 -
线程终止的三种情况
线程终止的三种情况1、线程从启动例程中返回,返回值为线程的退出码。2、线程可以被同一进程中的其他线程取消(调用pthread_cancel函数)。3、线程自身调用pthread_exit退出。涉及的Unix/Linux接口。#include void pthread_exit(void * rval_ptr);///rval_ptr是一个无类型指针,用于设置线程退出原创 2012-12-24 21:49:28 · 1251 阅读 · 0 评论 -
一起来学POSIX thread 之 线程的创建和基本操作接口
一起来学POSIX thread 之 线程的创建和基本操作接口1、线程的创建我们之前提到了POSIX thread的三个基本核心要输:执行环境、调度、同步。在这里我们首先介绍一下执行环境(Unix环境下)如何创建,POSIX thread提供了pthread_create接口用来创建线程。pthread_create的原型如下:int pthread_create(pthread_t原创 2013-02-10 23:46:15 · 3384 阅读 · 0 评论 -
一起来学POSIX thread 之 线程状态
一起来学POSIX thread 之 线程状态1、线程的四种基本状态的转换在OS中线程作为最基本的调度单元,它存在着四种基本状态,各个状态的转化情况如下图。四种状态的含义如下:1)就绪状态:线程能够运行,但在等待可用的处理器。可能刚刚启动,或刚刚从阻塞中恢复,或者从运行状态中被其他线程抢占从运行状态转变为就绪状态。2)运行状态:线程正在运行。在多处理器系统中,可原创 2013-02-11 22:02:19 · 1180 阅读 · 0 评论 -
一起来学POSIX thread 之 综合应用——线程池
一起来学POSIX thread 之 综合应用——线程池1、为什么需要线程池?部分应用程序需要执行很多细小的任务,对于每个任务都创建一个线程来完成,任务完成后销毁线程,而这就会产生一个问题:当执行的任务所需要的时间T1小于等于创建线程时间T2和销毁线程时间T3总和时即T1 ,应用处理任务的响应能力会大大减弱,从而影响了应用程序性能,为了解决这类问题,线程池技术提供了很好的解决方案。原创 2013-02-14 22:26:19 · 3036 阅读 · 2 评论 -
memcpy Linux内核实现引发的思考:为什么嵌入式汇编中不用指定段寄存器
memcpy Linux内核实现引发的思考:为什么嵌入式汇编中不用指定段寄存器最近买了王爽的汇编语言和Linux内核完全注释,准备开始好好学习一下汇编语言,并看看早期的Linux(0.11版本)源代码实现。之前舍友面试TX是被问过memcpy什么时候不能用,这种问题如何解决?答:当dest,src都指向同一个数组且dest>src,那么当n大于abs(dest > src),则这个时候原创 2013-05-18 11:21:27 · 3351 阅读 · 0 评论 -
extern “C” 陷阱
extern “C” 陷阱extern “C”通常使用在C++中,由于C++支持函数重载,命名空间等技术,故C++编译器在编译C++代码时会对函数进行签名,也就是说编译后的函数名将发生变化。例如我们有如下的代码:test.cppint fun(int a){///nothing.} 在Ubuntu下用g++编译这个cpp文件获取它的目标文件test.o,命令:原创 2013-06-04 22:27:10 · 2969 阅读 · 0 评论 -
Unix/Linux创建一个线程
Unix/Linux创建一个线程 使用Unix/Linux的系统接口pthread_create()函数创建一个新的线程,主线程和新线程一直输出消息。注意用g++编译的时候要加 -lpthread,即需要链接线程库。源代码如下:#include #includ原创 2011-10-08 23:30:38 · 6486 阅读 · 0 评论 -
在Unix/Linux下模拟双机热备(客户端自适应方式)
在Unix/Linux下模拟双机热备(客户端自适应方式) 最近突然对双机热备的切换的过程产生了浓厚的兴趣。晚上动手写了份代码模拟了,双机切换的过程。该模拟方式是通过客户端自适应的方式来实现。当一个客户端发现链接的服务器关闭之后,便链接备用服务器。具体描述如下:原创 2011-10-17 02:33:55 · 3223 阅读 · 4 评论 -
Unix/Linux如何创建一个后台进程(run background process)
Unix/Linux如何创建一个后台进程在Unix/Linux中创建一个后台进程的步骤1、调用fork函数,创建一个子进程。2、先让父进程自然结束。3、在子进程中调用setpgrp(),把子进程的进程组ID设为子进程的进程ID。4、在子进程中调用setsid(),创建一个新的Se原创 2011-07-24 16:34:27 · 4603 阅读 · 0 评论 -
OCI常用函数
一. Oracle oci工具包安装: $ORACLE_HOME\BIN:执行文件和help文件 $ORACLE_HOME\OCI\INCLUDE:头文件 $ORACLE_HOME\OCI\LIB\BC: for Borlanf C++的OCI库 $ORACLE_HOME\OC转载 2011-07-16 12:49:17 · 1645 阅读 · 0 评论 -
Source Insight使用技巧之关闭大括号自动缩进方法
Source Insight使用技巧之关闭大括号自动缩进方法2009年07月24日 星期五 10:53相信大家在使用Source Insight的时候曾经遇到过输入大括号会自动缩进的情况,现有一方法可以关闭Source Insight的这个自动缩进的方法:1.打开Options转载 2011-07-18 10:28:58 · 14106 阅读 · 0 评论 -
volatile 和 sig_atomic_t
1 volatile—影响编译器编译的结果volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量转载 2011-09-01 11:48:33 · 1608 阅读 · 0 评论 -
使用标准输入&&标准输出,进行文件复制
使用标准输入&&标准输出,进行文件复制 使用Linux/Unix的不带缓冲区得I/0函数read 和 write实现使用标准输入&&标准输出,进行文件复制。代码如下:#include #include "apue.h"#include "err_msg原创 2011-08-07 22:58:21 · 856 阅读 · 0 评论 -
在我博客中经常使用的“apue.h”和“err_msg.h”
在我的Linux/Unix的博客中,经常会时候用“apue.h”和“err_msg.h”,这两个文件的内容如下:apue.h/* * Our own hander, to be included before all * standard system head原创 2011-08-07 22:51:32 · 2870 阅读 · 0 评论 -
Socket编程基本原理
Socket编程基本原理1 问题的引入 UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文原创 2011-09-30 23:04:55 · 1250 阅读 · 0 评论 -
Unix/Linux线程同步互斥量的使用
Unix/Linux线程同步互斥量的使用 在main函数中创建3个子线程,并实时输出当前子线程数,当每创建一个子线程的时候,就对线程数变量加一,每个子线程运行3秒,3秒之后对子线程数变量值减一。当线程数为0时主线程退出。在对子线程数的读写过程中都使用到了线程同步的原创 2011-10-12 23:19:43 · 1979 阅读 · 0 评论 -
手把手教你实现自定义的应用层协议
1.简述互联网上充斥着各种各样的网络服务,在对外提供网络服务时,服务端和客户端需要遵循同一套数据通讯协议,才能正常的进行通讯;就好像你跟台湾人沟通用闽南语,跟广东人沟通就用粤语一样。实现自己的应用功能时,已知的知名协议(http,smtp,ftp等)在安全性、可扩展性等方面不能满足需求,从而需要设计并实现自己的应用层协议。2.协议分类2.1按编码方式二进制协议 比如网络通信运输层中的tcp原创 2017-03-11 17:03:07 · 8807 阅读 · 3 评论