ZT pthread_cleanup_push()/pthread_cleanup_pop()的详解
摘要:pthread_cleanup_push()/pthread_cleanup_pop()的详解 分类: Linux 2010-09-28 16:02 1271人阅读 评论(1) 收藏 举报asynchronousbufferapistructlinux编程刚练习线程的条件变量时碰到了这两个函数,关于这两个函数书上讲的比较模糊,所以在网上找到了一篇我感觉讲的很好的一篇文章,就是关于线程的终止,大概如下:一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程...
阅读全文
posted @
2014-03-25 10:51
jeans chen
阅读(158)
推荐(0)
ZT Linux系统环境下的Socket编程详细解析
摘要:Linux系统环境下的Socket编程详细解析 来自: http://blog.163.com/jiangh_1982/blog/static/121950520082881457775/ 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,S...
阅读全文
posted @
2014-01-28 14:25
jeans chen
阅读(315)
推荐(0)
ZT 匿名内存映射
摘要:mmap函数使用 分类: Linux/Unix C/C++ 2008-01-22 17:03 6089人阅读 评论(1) 收藏 举报unix编程null网络UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。函数:void *mmap(void *start,size_t length,int prot,int ...
阅读全文
posted @
2014-01-24 17:42
jeans chen
阅读(1958)
推荐(0)
ZT 获得/修改共享互斥量属性:pthread_mutexattr_t
摘要:bbs.chinaunix.net/thread-965755-1-1.html5.获得/修改共享互斥量属性: #include intpthread_mutexattr_getpshared(const pthread_mutexattr_t *restrictattr, int *restrictshared );//!> 获得共享互斥量属性,由shared带出 intpthread_mutexattrattr_ setpshared ( constpthread_mutexattr_t *restrict attr,intpshared);//!> 设置共享互斥属性,有sha
阅读全文
posted @
2014-01-24 17:26
jeans chen
阅读(1603)
推荐(0)
ZT fcntl设置FD_CLOEXEC标志作用
摘要:fcntl设置FD_CLOEXEC标志作用 分类: C/C++ linux 2011-11-02 22:11 3217人阅读 评论(0) 收藏 举报bufferexegccnullfile通过fcntl设置FD_CLOEXEC标志有什么用?close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。eg:jamie@jamie-laptop:~$ cat test.c#include #include #include #incl...
阅读全文
posted @
2014-01-09 18:10
jeans chen
阅读(275)
推荐(0)
execl execv
摘要:int execl(const char *path, const char *arg, ...);函数说明execl()其中后缀"l"代表list也就是参数列表的意思第一参数path字符指针所指向要执行的文件路径 接下来的参数代表执行该文件时传递的参数列表argv[0],argv[1]... 最后一个参数须用空指针NULL作结束2函数用法函数返回值成功则不返回值 失败返回-1 失败原因存于errno中可通过perror()打印Windows下示例(vs编译)#include #include int main(){printf("调用D盘Test目录下的hell
阅读全文
posted @
2014-01-09 18:02
jeans chen
阅读(501)
推荐(0)
ZT pthread_detach
摘要:pthread_detach 创 建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代 码,回收其资源(类似于wait,waitpid) 但是调用pthread_join(pthread_id)后,如果该线程没有运行结 束,调用者会被阻塞,在有些情况下我们并不希望如此,比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调 用pthre...
阅读全文
posted @
2014-01-07 18:10
jeans chen
阅读(264)
推荐(0)
ZT 线程的分离状态 2012-08-16 17:00:59
摘要:线程的分离状态 2012-08-16 17:00:59分类: LINUX其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下,有人说是桟资源不足引 起的,要调用一个pthread_attr_setdetachstate()函数,当时不明白为什么,其原理是什么,于是又搜了一下,下文是其原理简 述:在 任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他 线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程
阅读全文
posted @
2014-01-07 18:05
jeans chen
阅读(210)
推荐(0)
ZT 线程处理函数pthread_cleanup_push / pthread_cleanup_pop
摘要:http://bbs.csdn.net/topics/3906881052)创建了线程,但是线程退出时没有线程调用pthread_join()线程资源没有回收,如果持续创建线程,到一定数量后将不能再创建!可以在创建的线程中使用pthread_detach(pthread_self()),主线程就可以不调用pthread_join()1)只有pthread_cleanup_push() 直到进程退出都 没有调用pthead_cleanup_pop()pthread_cleanup_push压栈的函数在3种情况下会调用, 该线程调用pthread_exit()、其它线程调用pthread_ca..
阅读全文
posted @
2014-01-07 17:44
jeans chen
阅读(301)
推荐(0)
ZT linux 线程私有数据之 一键多值技术
摘要:这个原作者的这个地方写错了 且他举的例子非常不好。最后有我的修正版本pthread_setspecific(key, (void *)&my_errno);linux 线程私有数据之一键多值技术TSD池 2012-09-15 16:22:08分类: LINUX linux 线程私有数据之 一键多值技术 进程内的所有线程共享进程的数据空间,因此全局变量为所有线程所共有。但有时线程也需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Date)TSD来解决。在线程内部,私有数据可以被各个函数访问,但对其他线程是屏蔽的。一个明显的例子是errno,每个线程都有自
阅读全文
posted @
2013-12-31 15:59
jeans chen
阅读(334)
推荐(0)
ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程
摘要:为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用(2009-10-27 11:07:23)转载▼标签:杂谈分类: 计算机举一个例子(http://blog.csdn.net/KataDoc360/archive/2009/02/16/3897957.aspx):pthread_mutex_t count_lock;pthread_cond_t count_nonzero;unsigned count = 0;decrement_count () { pthread_mutex_lock(&count_lock); while(count==0)
阅读全文
posted @
2013-12-27 17:39
jeans chen
阅读(1591)
推荐(0)
ZT sem_init sem_wait sem_post sem_destroy
摘要:sem_init() 2009-06-26 16:43:11|分类: linux |字号订阅 信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为: extern int sem_init __P((sem_t *__sem, int __pshared, unsigned int __value)); sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。 函数sem_post( sem_t *sem)用来增加信号量的值。当有线程阻...
阅读全文
posted @
2013-12-27 15:33
jeans chen
阅读(320)
推荐(0)
ZT sigprocmask,sigpending函数
摘要:sigprocmask,sigpending函数 分类: LINUX 2012-02-02 16:39 905人阅读 评论(0) 收藏 举报signalredhatnulllinux【sigprocmask系统调用】功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。用法:#include int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);参数:how:用于指定信号修改的方式,可能选择有三种SIG_BLOCK //加入信号到进程屏蔽。SIG_UNBLOCK //从进程屏蔽里将信号删除。SIG_SETM...
阅读全文
posted @
2013-12-27 11:18
jeans chen
阅读(281)
推荐(0)
zt dup() 和 dup2()
摘要:dup() 和 dup2() 2011-10-07 11:06:31|分类: Linux学习心得 |字号订阅dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。#include int dup(int newfd);int dup2(int newfd, int oldfd); 下面用一个简单的例子解释两个函数的用法和区别:#include #include #include #include #include #include int main(void){ int fd, save_fd; char msg[] = "This is a t
阅读全文
posted @
2013-11-21 14:10
jeans chen
阅读(237)
推荐(0)
ZT 父子进程共享文件描述符
摘要:转贴自倒霉熊的博客【linux学习笔记-2】父子进程共享文件描述符(2009-03-02 23:03:17)转载▼标签:学习linux子进程文件描述符杂谈分类: 学习#include #include//包含O_RDONLY等宏定义int main(void){char test;int fd;if((fd = open("test.dat",O_RDONLY))==-1){perror("Can't open file test.dat\n");return 1;}printf("Open file succeed.\n")
阅读全文
posted @
2013-11-19 18:02
jeans chen
阅读(508)
推荐(0)
APUE1.11:系统调用 库函数
摘要:区别是:system call:提供一种最小接口,而库函数通常提供比较复杂的功能。
阅读全文
posted @
2013-09-22 14:57
jeans chen
阅读(144)
推荐(0)