Unix环境高级编程
xb_0916
自我评价
为人诚恳,热情,专业知识扎实,工作认真踏实负责,良好的沟通能力及团队合作创新精神
展开
-
POSIX 线程详解
POSIX 线程详解一种支持内存共享的简捷工具 级别:初级Daniel Robbins,总裁/CEO, Gentoo Technologies, Inc.2000 年 7月 01日 POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins向您精确地展示在编程中如何使用线程。其中还涉及大量幕后细节,读完本系列文转载 2013-05-21 11:07:23 · 388 阅读 · 0 评论 -
服务器进程为何通常fork()两次
前几天接到某互联网公司的电话面试,面试官问我两次fork()的作用,我一头雾水,说不知道。知识面还是太窄了。下面就总结下两次fork()的作用。 首先,要了解什么叫僵尸进程,什么叫孤儿进程,以及服务器进程运行所需要的一些条件。两次fork()就是为了解决这些相关的问题而出现的一种编程方法。 孤儿进程 孤儿进程是指父进程在子进程结束之前死亡(return 或exit)。转载 2013-07-08 14:55:04 · 459 阅读 · 0 评论 -
进程间传递描述符二
进程间传递描述符二发送、接收描述符发送描述符经过了前面的准备工作,是时候发送描述符了,先来看看函数原型:int write_fd(int fd, void *ptr, int nbytes,int sendfd); 参数说明如下:@fd:发送TCP套接字接口;这个可以是使用socketpair返回的发送套接字接口@ptr:发送数据的缓冲区指针;@nbytes:发送的转载 2013-08-07 13:17:37 · 505 阅读 · 0 评论 -
进程间传递描述符一
进程间传递描述符一每个进程都拥有自己独立的进程空间,这使得描述符在进程之间的传递变得有点复杂,这个属于高级进程间通信的内容,下面就来说说。顺便把Linux和Windows平台都讲讲。Linux下的描述符传递Linux系统系下,子进程会自动继承父进程已打开的描述符,实际应用中,可能父进程需要向子进程传递“后打开的描述符”,或者子进程需要向父进程传递;或者两个进程可能是无关的,显然这需要一转载 2013-08-07 13:16:44 · 498 阅读 · 0 评论 -
linux中使用pthread_kill函数测试线程是否存活
pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默转载 2013-10-09 11:01:40 · 518 阅读 · 0 评论 -
Linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用转载 2013-10-16 11:25:10 · 648 阅读 · 0 评论 -
linux多线程---pthread_cancel
线程创建1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可转载 2014-03-04 15:34:10 · 541 阅读 · 0 评论 -
浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(Application Prog转载 2014-07-18 09:48:42 · 434 阅读 · 0 评论 -
Linux 标准I/O函数库
标准I/O函数库: C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作,主要的函数列举如下。 ◆ 打开与关闭文件:fopen,fclose。 ◆ 读写文件:fread,fwrite。 ◆ 读写文本行:fgets,fputs。 ◆ 格式化读写转载 2014-07-18 09:50:00 · 370 阅读 · 0 评论 -
Linux用户空间与内核空间
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存转载 2014-06-03 10:52:28 · 400 阅读 · 0 评论 -
WIFEXITED/WEXITSTATUS/WIFSIGNALED
http://hi.baidu.com/adane/blog/item/154c0cd7ca893ed8a044df40.htmlWIFEXITED/WEXITSTATUS/WIFSIGNALED2008-06-13 15:07If the exit status value (*note Program Termination::) of the childprocess i转载 2013-06-07 14:43:00 · 500 阅读 · 0 评论 -
系统调用跟我学
系统调用跟我学(1)本文是Linux系统调用专栏系列文章的第一篇,对Linux系统调用的定义、基本原理、使用方法和注意事项大概作了一个介绍,以便读者对Linux系统调用建立一个大致的印象。系统调用跟我学(2)本文介绍了Linux下的进程概念,并着重讲解了与Linux进程管理相关的4个重要系统调用getpid,fork,exit和_exit,辅助一些例程说明了它们的特点和使用方法转载 2013-06-08 09:51:59 · 533 阅读 · 0 评论 -
互斥量、条件变量与pthread_cond_wait()函数的使用,详解
1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called withmutex locked by the calling thread or unde转载 2013-05-17 19:50:51 · 410 阅读 · 0 评论 -
APUE学习笔记(17)-线程和信号
线程的信号屏蔽字每个线程都有自己的线程屏蔽字,但是信号处理函数是进程中所有线程共享的。这意味着尽管单个线程可以阻止某些信号,但当线程修改了与某个信号相关的处理行为后,所有的线程都必须共享这个处理行为的改变。 进程中的信号是递送到单个线程的。如果信号与硬件故障或定时器超时相关,该信号就被发送到引起该事件的线程中去,而其它的信号则被发送到任意一个线程。但要注意,闹钟定时器是转载 2013-05-21 11:14:13 · 419 阅读 · 0 评论 -
Linux 多线程应用中的信号处理
Linux 多线程应用中的信号处理模型在基于 Linux 的多线程应用中,对于因为程序逻辑需要而产生的信号,可考虑调用sigwait()使用同步模型进行处理。其程序流程如下:主线程设置信号掩码,阻碍希望同步处理的信号;主线程的信号掩码会被其创建的线程继承;主线程创建信号处理线程;信号处理线程将希望同步处理的信号集设为 sigwait()的第一个参数。主线程创建工作线程。图 2.转载 2013-05-27 15:23:20 · 597 阅读 · 0 评论 -
Linux system函数返回值
例:1status = system("./test.sh");1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。转载 2013-05-20 10:17:45 · 375 阅读 · 0 评论 -
linux信号机制之sigaction结构体浅析,signal 函数,信号捕捉
信号安装函数sigaction(int signum,const struct sigaction *act,structsigaction*oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄混淆了)。在结构sigaction的实例中,指定了对特定信号的处理,信号所传递的信息,信号处理函数执行过程中应屏蔽掉哪些函数等。当然,此指针也可以为NULL,进转载 2013-05-17 16:00:58 · 439 阅读 · 0 评论 -
linux 守护进程编写
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程转载 2013-05-17 15:02:07 · 328 阅读 · 0 评论 -
让您轻松理解execl函数系列(ZZ)
execl函数功能如下:启动一个可执行文件,并且对他进行传送参数。一些原型如下 Java代码 #include extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *fi转载 2013-06-03 14:22:25 · 451 阅读 · 0 评论 -
深入浅出---unix多进程编程之wait()和waitpid()函数
Wait和waipid函数 当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个一步事件,所以这种信号也是内核系那个父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。现在要知道调用wait或waitpid的进程可能会发生什么情况: 如果其所有子进程都在运行,则阻塞转载 2013-06-07 13:58:14 · 482 阅读 · 0 评论 -
深入浅出--UNIX多进程编程之fork()函数
0前言上周都在看都在学习unix环境高级编程的第八章——进程控制。也就是这一章中,让我理解了unix中一些进程的原理。下面我就主要按照进程中最重要的三个函数来进行讲解。让大家通过阅读这一篇文章彻底明白进程这点事。希望对大家有所帮助。1进程环境 在学习进程之前,一定要了解一下unix的进程环境。系统如何对进程终止,和一个程序启动终止,程序运行的原理等,这些都有助于你理解进转载 2013-06-07 15:10:19 · 432 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步、I/O模型
转载于:http://blog.csdn.net/hguisu/article/details/74533901. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一转载 2015-05-06 12:46:01 · 372 阅读 · 0 评论