自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 fork()函数的两次返回的具体情况

导读: fork()函数的两次返回的具体情况对于fork来说,父子进程共享同一段代码空间,所以给人的感觉好像是有两次返回,其实对于调用 fork的父进程来说,如果fork出来的子进程没有得到调度,那么父进程从fork系统调用返回,同时分析sys_fork知道,fork返回的是子进 程的id。再看fork出来的子进程,由copy_process函数可以看出,子进程的返回地址为ret_fro

2008-01-22 17:08:00 914

转载 谈谈snprintf

众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf.snprintf(_snprintf)的声明是这样的int _snprintf(   char *buffer,   size_t count,   const char *format [,      argument] ... );最常见的错误用法有:1.char

2008-01-22 17:04:00 741

原创 Linux网络编程一步一步学-自己编写一个HTTP协议的目录浏览和文件下载服务器

导读:   From:http://www.chinaunix.net/jh/23/892147.html   服务器源代码如下:   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include

2008-01-22 16:39:00 793

原创 bzero函数详解

导读:   原型:extern void bzero(void *s, int n);   用法:#include   功能:置字节字符串s的前n个字节为零。   说明:bzero无返回值。   举例:   // bzero.c   #include   #include   main()   {   struct   {   int a;   char s[5];   float

2008-01-22 16:36:00 10866 4

原创 sprintf你知道多少

导读:   在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。   sprintf 是个变参函数,定义如下:   int sprintf( char *buffer, const char

2008-01-22 16:33:00 452

原创 Linux 环境进程间通信(六)

导读:   在 本专题的前面几个部分,如消息队列、信号灯、共享内存等,都是基于Sys V的IPC机制进行讨论的,它们的应用局限在单一计算机内的进程间通信;基于BSD套接口不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间 的通信。本文将主要介绍BSD套接口(sockets),以及基于套接口的重要而基本的API。   一个套接口可以看作是进程间通 信的端点(endpoint),每个

2008-01-22 16:31:00 463

原创 Linux环境进程间通信(五): 共享内存(下)

导读:   在 共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同。系统V共享内存指的是 把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。   系统调用mmap()通过映射一个普通文

2008-01-22 16:30:00 538

原创 Linux环境进程间通信(五): 共享内存(上)

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

2008-01-22 16:28:00 580

原创 Linux环境进程间通信(四)

导读:   信号灯  信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。   一、信号灯概述   信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源

2008-01-22 16:26:00 503

原创 Linux环境进程间通信(三)

导读:   本系列文章中的前两部分,我们探讨管道及信号两种通信机制,本文将深入第三部分,介绍系统 V 消息队列及其相应 API。   消息队列(也叫做报文队列)能 够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即

2008-01-22 16:25:00 467

原创 Linux环境进程间通信(二): 信号(下)

导读:   在 信号(上)中,讨论了linux信号种类、来源、如何安装一个信号以及对信号集的操作。本部分则首先讨论从信号的生命周期上认识信号,或者宏观上看似简单 的信号机制(进程收到信号后,作相应的处理,看上去再简单不过了),在微观上究竟是如何实现的,也是在更深层次上理解信号。接下来还讨论了信号编程的一些 注意事项,最后给出了信号编程的一些实例。   一、信号生命周期   从信号发送到信号

2008-01-22 16:23:00 522

原创 Linux环境进程间通信(二): 信号(上)

导读:   linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。读者可以先读一下信号应用实例(在信号(下)中),这样可以对信号发送直到相应的处理函数执行完毕这一过程有个大致的印象。本文尽量给出了较新函数的应用实例,着重说明这些的功能。   一、信号及信号来源   信号本质   信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收

2008-01-22 16:20:00 519

原创 Linux环境进程间通信(一)

导读:   本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因 此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证

2008-01-22 16:19:00 471

转载 Linux下的段错误产生的原因及调试方法

 Linux下的段错误产生的原因及调试方法   简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.   一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存

2008-01-22 16:10:00 756

原创 Linux--get_pid函数分析

导读:      get_pid函数的意图很明显,就是找到一个pid分配给进程。首先变量last_pid,用于记录上一次分配给进程时的pid值。而分配的过程,一般而言是last_pid+1,如果超出进程个数的最大值(0x7fff),那么进程pid值从300开始重新查找未用的。也就是说,一般用户进程的pid值范围[300,7fff]。(0~299,留给系统)。对于变量next_safe的含义

2008-01-22 15:58:00 6824

转载 Linux编程常用的函数(十二) 信号

本文研究Spring分层Bean Factory用法,先看有关代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 parent.xml 2  3 DOCTYPE beans PUBLIC "-//SPRING//DTD

2008-01-22 15:23:00 523

转载 Linux编程常用的函数(十一) 系统数据文件和信息

(十一)系统数据文件和信息1.include struct passwd *getpwuid(uid_t uid);struct passwd *getpwnam(const char *name);//获取口令文件返回passwd结构,出错返NULLstruct passwd {  char *pw_name; //用户名  char *pw_passwd; //加密口令  uid_t bl

2008-01-22 15:21:00 824

转载 Linux编程常用的函数(十) 标准I/O

(十)标准I/O1.#include #include int fwide(FILE *fp, int mode);//设置流定向(宽定向返回正/字节定向返回负/未定向返回0)mode参数值为负:试图使指定的流是字节定向的;正:宽定向;0不试图设置流的定向2.void setbuf(FILE *restrict fp, char *restrict buf);int setvbuf(FILE

2008-01-22 15:20:00 616

转载 Linux编程常用的函数(九) 文件访问

(九)文件访问1. #include  int open(const char *pathname, int oflag, …)//打开或创建文件  若成功返回文件描述符,出错返回-1;参数说明:  pathname:要打开或创建文件的名字oflag:以下三个只选其一:O_RDONLY(只读打开)、O_WRONLY(只写打开)、O_RDWR(读写打开)以下可选:O_APPEND 每次写时都追加

2008-01-22 15:18:00 1195

转载 Linux编程常用的函数(八) 网络编程

 (八)网络编程  1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。#includeint socket(int family, int type, int protocol);//成功返回非负描述字;失败返回-1  第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协

2008-01-22 15:17:00 2212 2

转载 Linux编程常用的函数(七) MYSQL编程

(七)MYSQL编程1.数据类型:MYSQL 這個結構表示對一個數據庫連接的句柄,它被用于幾乎所有的MySQL函數。 MYSQL_RES 這個結構代表返回行的一個查詢的(SELECT, SHOW, DESCRIBE, EXPLAIN)的結果。從查詢返回的信息在本章下文稱為結果集合。 MYSQL_ROW 這是一個行數據的類型安全(type-safe)的表示。當前它實現為一個計數字節的字符串數組。

2008-01-22 15:16:00 774

转载 Linux编程常用的函数(六) PGSQL编程

(六)PGSQL编程1.PGconn *PQconnectdb(const char *conninfo);//与数据库服务器建立一个新的连接conninfo可以包含的内容有:host,hostaddr, port, dbname, user, password, connect_timeout, options,tty,sslmode,requiressl,service2.//与数据库服务

2008-01-22 15:14:00 2574

转载 Linux编程常用的函数(五) 共享内存

(五)共享内存1.内核为每个共享内存设置了一个 shmid_ds结构,它的成员如下:Struct shmid_ds{struct ipc_perm shm_perm;   //操作权限结构size_t     shm_segsz;   //用字节表示的段的长度pid_t     shm_lpid;   //最后一个操作的进程IDpid_t     shm_cpid;   //创建者的进程IDshm

2008-01-22 15:11:00 1332

转载 Linux编程常用的函数(四) 信号量

(四) 信号量1. 内核为每个信号量集合设置了一个semid_ds结构:  struct demid_ds{    struct ipc_perm sem_perm;    unsigned short sem_nsems; //信号量的个数    time_t sem_otime; //上一次semop的时间    time_t sem_ctime;//上一次change的时间    。 。

2008-01-22 15:09:00 965

转载 Linux编程常用的函数(三) 消息队列

(三)   消息队列1.每个队列都有一个msqid_ds结构与之相关联:    struct msqid_ds{      struct ipc_perm msg_perm;          msgqnum_t msg_qnum; //消息的数量      msglen_t msg_qbytes; //最大消息的长度      pid_t msg_lspid;   //最后一个发送到消息队列

2008-01-22 15:07:00 750

转载 Linux编程常用的函数(二) 线程

(二)线程1. #include int pthread_equal(pthread_t tid1, pthread_t tid2);//相等返回非0,否则返回02. pthread_t pthread_self(void);返回调用线程的ID3. int pthread_create(pthread_t *restrict tidp,  const pthread_attr_t *restr

2008-01-22 15:05:00 557

转载 Linux编程常用的函数(一) 进程

Linux编程常用的函数 总共分为12部分分别是:进程、线程、消息队列、信号量集、共享内存、PGSQL编程、MYSQL编程、网络编程、文件访问、标准I/O、系统数据文件和信息、信号  (一)     进程 1.     进程ID为0的进程通常是调度进程,常

2008-01-22 15:02:00 470

原创 Cygwin视窗下的UNIX多面手

导读:    Cygwin视窗下的UNIX多面手 简单地说:Cygwin是GNU的开发人员为了能将UNIX系统下一些强大应用移植到Windows环境下而开发的一套中间移植工具。你也可以将它理解为Windows环境下一套强大的UNIX仿真工具。究竟是什么,主要看你拿Cygwin来干什么,如果你是开发人员,那么它就是开发工具;如果你想在Windows环境下学习、使用UNIX系统,它就是一个U

2008-01-22 14:55:00 797

转载 cygwin.bat的内容

cygwin.bat的内容,很显然,他是在调用那些小模拟程序。代码:@echo offD:chdir D:/work/cygwin/binbash --login -i代码:D:/work/cygwin/bin>dir *.exe /w驱动器 D 中的卷没有标签。卷的序列号是 A820-0EC4D:/work/cygwin/bin 的目录a2p.exe          

2008-01-22 14:38:00 6078

原创 Cygwin模拟Unix环境攻略,支持vi,g++等命令

一、安装   (先下载,42MB左右)   ftp.tarena.com.cn   用户名:csd0701 密码:tarena 目录:UNIX[/b]   1、双击Setup.exe;   2、下一步,选中"Install from Local Directory",下一步;   3、使用默认安装路径或浏览要安装的目录,下一步;   4、点击"Local Package Directory

2008-01-22 14:34:00 1839 1

原创 [学习CURSES] 调用refresh或wrefresh?

[学习CURSES] 调用refresh或wrefresh?#include ;int main (void){    WINDOW *NewWin ;    initscr () ;    clear () ;    refresh () ;    NewWin = newwin (4,40,4,4) ;    box (NewWin, 0, 0) ;    wrefresh (NewW

2008-01-22 14:28:00 1115

原创 void (*func)(int) 知道这样定义这个函数什么意思么?

导读:   这个函数是这样的:void (*signal (int sinno,void(*func)(int)))(int)   这个函数有两个地方在结尾用(int),什么意思,比如void (*func)(int),在结尾加(int)代表什么意思?   最佳答案   先解释void (*func)(int):   void func()->void func(int)->void *f

2008-01-22 14:16:00 1674

转载 (转)右左法则----复杂指针解析

导读:   上一章费那么多唇舌讨论C语言的声明,其实目的都是为了这一章,期望读者通过对C语言声明形式的详细了解,树立声明嵌套的观念,因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从 C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩

2008-01-22 13:59:00 369

《unixLinux下的Curses库开发指南》综合示例程序 -unixlinux develop guide with Curses libraryinstances program

《unixLinux下的Curses库开发指南》综合示例程序 -unixlinux develop guide with Curses libraryinstances program

2009-03-02

简单的串口通讯示例程序

编译工具:VC++ 功能:可向串口发送数据,或从指定串口接收数据!

2009-03-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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