摘要: SYNOPSIS #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value);//初始化信号量 int sem_wait(sem_t * sem);//等待信号,获取拥有权 int sem_trywait(sem_t * sem); int sem_post(sem_t * sem);//发出信号即释放拥有权 int sem_getvalue(sem_t * sem, int * sval); int sem_destroy(sem_t * sem);//注销信号量,在linux中 阅读全文
posted @ 2011-04-20 16:55 hnrainll 阅读(30646) 评论(0) 推荐(3) 编辑
摘要: ioctl函数本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>int ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型:类别Request说明数据类型套接口SIOCATMARKSIOCSPGRPSIOCGPGRP是否位于带外标记设置套接口的 阅读全文
posted @ 2011-04-20 16:21 hnrainll 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a; 这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。 voi 阅读全文
posted @ 2011-04-20 13:24 hnrainll 阅读(411) 评论(0) 推荐(0) 编辑
摘要: #include<stdlib.h>#include<stdio.h>#include<unistd.h>#include<pthread.h>void clean_fun1(void * arg){ printf("this is clean fun1\n");}void clean_fun2(void * arg){ printf("this is clean fun2\n");}void * thread_fun(void * arg){ pthread_cleanup_push(clean_fun1 阅读全文
posted @ 2011-04-20 12:31 hnrainll 阅读(4476) 评论(0) 推荐(0) 编辑
摘要: 概述 在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是 (*(void (*)( ) )0)( )。看起来确实令人头大,那好,让我们知难而上,从两个不同的途径来详细分析这个问题。 答案分析:从尾到头 首先,最基本的函数声明: void function (paramList); 最基本的函数调用: function(paramLis 阅读全文
posted @ 2011-04-20 10:12 hnrainll 阅读(490) 评论(0) 推荐(0) 编辑