- 博客(65)
- 资源 (4)
- 收藏
- 关注
原创 linux 多线程条件变量
一直对条件变量有几个疑惑,最近抽了点时间,终于搞清楚了这几个问题。以下面程序为例,进行分析。#include <pthread.h>struct msg {struct msg *m_next;/* ... more stuff here ... */};struct msg *workq;pthread_cond_t qready = PTHREAD_COND_I...
2019-02-27 14:12:15
336
转载 记录锁,多进程,临界区
1. 记录锁概念和功能当两个人同时编辑一个文件时,其后果将如何呢?在很多U N I X系统中,该文件的最后状态取决于写该文件的最后一个进程。但是对于有些应用程序,例如数据库,有时进程需要确保它正在单独写一个文件。为了向进程提供这种功能,较新的U N I X系统提供了记录锁机制记录锁(record locking)的功能是:一个进程正在读或修改文件的某个部分时,可以阻止其他进
2014-10-20 23:22:37
2760
转载 字节对齐
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访
2014-04-01 22:56:14
734
转载 python获取时间
我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这篇文章,如果你觉的对你有用的话,可以收藏下。取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时
2014-02-20 21:18:00
680
转载 socket 阻塞和非阻塞
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回
2014-02-20 21:14:20
1294
转载 socket 长连接和短连接
Socket协议的形象描述socket的 英文原义是“孔”或“插座”。在这里作为4BDS UNIX的进程通信机制,取后一种意思。socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个soc
2014-02-20 21:03:12
941
转载 网络字节序与主机字节序
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感
2014-02-20 20:57:08
533
转载 DSP中断使用简明教程
一、 简述本文介绍TMS320C6000系列中断设置的简明方法。通过示例定时器中断,MCBSP串口接收中断及外部中断这三种中断实现过程,介绍如何实现中断各个寄存器的配置,中断向量表书写以及中断服务函数。最后提供一个简要的示例程序可供大家下载使用。此示例在DSK6416的TI官方实验板上通过测试。由于定时器和串口工作模式较繁,因此对中断无关部分不做介绍。二、 实现DSP中断需要做哪些通用工作
2012-08-14 22:21:57
15012
转载 DSP优化心得
C6XX优化经验总结一、c6x的编译的常用选项(一)c6x的编译程序为“cl6x.exe”使用的方法Cl6x [options] [filenames]Cl6x: 编译程序Options: 编译选项Filenames: C或汇编源文件说明:编译选项是一个字母或者两个字母,对大小写不敏感。编译选项的前面需要有一个“-”符号。一个字母的选项可
2012-08-14 22:09:48
1619
转载 COFF 文件的格式
COFF – 通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式。其它的编译器,如GCC(GNU Compiler Col
2012-08-14 22:08:18
1545
转载 ps -aux 状态详解
运行 ps aux 的到如下信息: ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDsmmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00
2011-11-23 22:53:21
20702
原创 pthread_detach
pthread_detach 创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结
2011-09-04 23:17:54
7678
转载 Linux 多线程编程(三)
继续昨天的线程同步,条件变量(Condition Variables)是用于线程间,通信共享数据状态改变的机制。简介条件变量的创建和销毁等待条件变量唤醒等待条件变量的线程简介 当线程互斥地访问一些共享的状态时,往往会有些线程需要等到这些状态改变后
2011-08-09 23:19:55
1482
转载 Linux多线程编程(二)
并行的世界,没有同步,就失去了秩序,就会乱作一团!试想,交通没有红绿灯,生产线产品装配没有一定的顺序... 结果是显而易见的。多个线程也需要同步,否则程序运行起来结果不可预测,这是我们最不能容忍的。交通的同步机制就是红绿灯,Pthread提供了互斥量(mutex)和条件变量(
2011-08-09 23:14:49
1489
原创 Linux 多线程编程(一)
1、创建线程: 有一个比较特殊的线程, 就是主线程或者称为初始线程,它是当一个进程被创建时创建的。而其他线程则是在初始线程中调用pthread_create创建的。创建的新线程初始为Ready状态,等待处理器调度。2、执行线程: 线程被创建后,就会执行
2011-08-04 23:22:01
3558
转载 多线程与fork
前言:exce调用并不创建新进程,所以前后的进程ID并未改变,exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段多线程程序里不准使用fork :为什么???UNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在”
2011-08-04 00:06:01
9657
原创 浅析setsockopt
浅析:setsockopt()1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsoc
2011-07-27 23:35:22
897
转载 Linux多线程编程和信号易疏忽的一个例子
这几天把一个网络流量采集器程序基本改好了,原来在main函数中把几个子线程启动后就睡10分钟后开始清理子线程后退出。现在想改成子线程启动后主线程进入无限睡眠,直到收到SIGTERM或SIGINT。主程序如下:其他头文件#include //信号处理所需要的头文件int main
2011-07-27 00:34:32
1764
转载 Linux监听子线程的函数
waitpid系统调用】 功能描述: 等待进程改变其状态。所有下面哪些调用都被用于等待子进程状态的改 变,获取状态已改变的子进程信息。状态改变可被认为是:1.子进程已终止。2.信号导致子进程停止执行。3.信号恢复子进程的执行。在子进程终止的情况 下,wait调用将允许
2011-07-27 00:16:36
2386
转载 Linux Pthread_kill
pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread
2011-07-26 23:33:17
5242
转载 Linux makefile学习
最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看完发现这篇文章和《Linu
2011-07-23 12:20:55
884
转载 miitool和ethtool 工具介绍
通过mii-tool和ethtool工具来调整网卡的速度、协商方式(双工)等,这样能提高网卡的效率;mii-tool 介绍有时网卡需要配置协商方式,比如10/100/1000M的网卡半双工、全双工、自动协商的配置。但大多数的网络设备是不用我们来修改协商,因为大多数网 络设置接入的
2011-07-20 00:29:52
1987
转载 ping程序实现
大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。 ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个。ping命令的工作原理是:向网络上的另一个主机系统发送
2011-07-19 23:48:20
2154
转载 ifconfig命令
ifconfig命令ifconfig是linux系统最为常用的网络工具,可以用于查看网络设置,进而更改网络的参数。[root@rhel-templet ~]# ifconfigeth0 Link encap:Ethernet HWaddr 00:0C:29:DF:59
2011-07-19 23:33:52
4663
转载 ioctl函数
ioctl 函数 本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request
2011-07-16 23:38:01
966
转载 Linux环境变量学习
1、总结背景在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲解环境变量定制的问题。2、变量简介Linux是一个多用户的操作系统
2011-06-23 22:09:00
625
转载 LINUX-IPCS信息
在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清楚而引起一些问题。查看共享信息的内存的命令是ipcs [-m|-s|-q]。默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列。怎样清楚呢?清楚命令是ipcrm [-m|-s|-q] id。-m 删除共享内存,-s删除共享信号量,-q删除共享队列。下面是一个操作示例:view
2011-06-23 12:27:00
1188
转载 ar 命令用法
ar 命令用途维护链接编辑器使用的索引库。语法ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -h | -p | -t | -x } [ -X {32|64|32_64}] ArchiveFile [ File ... ]ar [ -c ] [ -l ] [ -g | -o ] [
2011-06-23 01:04:00
14917
转载 gcc编译选项
gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration
2011-06-22 20:09:00
10306
转载 cc 和gcc编译器
从名字上看,老的unix系统的CC程式叫做C Compiler。但GCC这个名字按GNU的说法叫做Gnu Compiler Collection。因为gcc包含非常多编译器(C, C++, Objective-C, Ada, Fortran,and Java)。所以他们是不相同的,一个是个古老的C编译器,一个是编译器的Gnu的编译器的集合(Gcc里的C编译器比CC强大太多了,所以你没必要用CC)。
2011-06-22 19:59:00
7121
原创 aCC 编译器编译选项
aCC是HP公司的商业C++编译器,以下是一些编译选项的用法。 1) -AA 全面支持C++(HPUX PA上编译C++时的必须选项)2) -V 查看版本3) +DD64 编译64位程序 +DD32编译32位程序,在64位系统上默认编译的是32位程序。4) +DAportable 跨版本编译5) -lpthread 支持POSIX线程6) -lrt 支持POSI
2011-06-21 00:41:00
3509
原创 HP UNIX下aCC安装
我用到的aCC编译器是B9007AAEVAL_C.11.31.06.EVAL_HP-UX_B.11.31_IA_PA.depot。可以在HP官网下载到。安装步骤如下:1、将安装包放在/var 下2、swinstall -s /var/B9007AAEVAL_C.11.31.06.EVAL_HP-UX_B.11.31_IA_PA.depot3、弹出对话框,Actions--->Chang Targe
2011-06-19 23:46:00
4751
原创 dos2unix
Linux和Windows文本文件的行结束标志不同。在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行。所以在Linux中使用Windows的文本文件常常会出现错误。为了避免这种错误,Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"/r/n"转化成"/n",unixtodos把"/n"转化成"/r/n"。命
2011-06-09 00:29:00
8247
转载 linux下遍历目录树方法总结
<br />前几天需要实现对整个目录树的遍历,查阅了相关的一些资料。开始找到的原始的方法是使用readdir()与lstat()函数实现递归遍历,后来发现linux对于目录遍历这种最常用的操作已经提供了很完善的接口:ftw()与nftw()。下面就这两种方法具体说明一下。<br
2011-05-24 23:50:00
11415
转载 Linux C函数之文件及目录函数
<br />link: 建立文件硬连接<br />头文件: unistd.h<br />函数定义: int link(const char *oldpath, const char *newpath);<br />说明: link()以参数newpath指定的名称来建立一个新的连
2011-05-24 22:22:00
1296
原创 windows 下编译debug 版的openssl
1) perl Configure no-asm -debug VC-WIN32 --prefix="D://openssl_program//openssl"//生成编译脚本2)ms/do_ms//编译生成动态库3)nmake -f ms/ntdll.mak//清除4)nmake -f ms/ntdll.mak clean生成静态库3)nmake -f ms/nt.mak 4)nmake -f ms/nt.mak clean
2011-05-23 20:31:00
2686
转载 vc中使用动态链接库小结
<br />vc中使用动态链接库小结 <br />一. 静态库包括.lib和.h文件,在工程中使用静态库分为3步:<br /><1> 在工程中加入静态库,有两种方法:<br /> **方法一:项目设置中引用.lib,project-> setting-> link-> object/library modules中添加.lib;(需要在tools/options设置正确的引用路径)<br /> **方法二:在项目中直接加入lib,project-> add to pro
2011-05-23 19:33:00
676
转载 ldconfig命令的作用
<br />ldconfig命令的作用<br />ldconfig是一个动态链接库管理命令<br />为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig<br />ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动
2011-04-18 23:47:00
670
原创 Microsoft CryptoAPI加密技术(一)
<br />Microsoft CryptoAPI加密技术(一)<br />在这个信息爆炸的时代,我们不得不对信息的安全提高警惕。加密作为保障数据信息安全的一种方式,越来越受到人们的关注。<br />下面,我将把自己对Microsoft CryptoAPI的一些肤浅的理解与大家共
2011-04-18 23:46:00
860
转载 CSP开发流程
<br />当前,国内许多科研单位开发了高强度加密算法,这些加密算法或者以纯软件形式,或者以加密卡形式提<br />供给用户。不同加密服务提供者提供的加密接口往往各不相同,这就给用户带来不便。因此,出现了有关加<br />密API国际标准和规范,呈现给用户加密API有几种统一形式
2011-01-26 22:59:00
2235
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人