Linux 系统编程
yuzhoudiwang
这个作者很懒,什么都没留下…
展开
-
linux 信号的处理
1. 信号概念信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入kill –l查看信号列表,或者键入man 7signal查看更详细的说明。信号的生成来自内核,让内核生成信号的请原创 2009-07-22 14:25:00 · 750 阅读 · 0 评论 -
一直搞不懂的 sigpromask ()
这两天在看APUE的信号一章,对信号量的操作感觉一直很困惑,今天又回过来翻了下,对sigprocmask简单的总结了下,先摘抄一段系统调用的介绍,相信你看过之后会和我一样还是无比的困惑,后来搜索了下,基本搞清楚了,sigprocmask就是用来在进程执行过程中,对某段程序不想让其它的信号量影响其执行而设计的,一般在程序段开始处调用一次,屏蔽需要屏蔽的信号量,在程序段结束的地方调用一原创 2009-07-23 08:51:00 · 1740 阅读 · 0 评论 -
;linux 线程总结
所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。下面说一下如何创建一个线程。通过创建线程,线程将会执行一个线程函数,该线程格式必须按照下面来声明: void * Thread_Function(void *)转载 2009-07-25 16:07:00 · 1173 阅读 · 0 评论 -
linux 线程 进程经典文章
进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是 死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。 进程又被细化为线程,也就是一个进程下有多个能独立运行的更小原创 2009-07-25 14:49:00 · 824 阅读 · 0 评论 -
linux 跳转 setjmp longjmp
setjmp.h is a header defined in the C standard library to provide "non-local jumps": control flow that deviates from the usual subroutine call and return sequence. The complementary functionssetjm原创 2013-10-21 13:35:35 · 969 阅读 · 0 评论 -
linux getrlimit,setrlimit函数
getrlimit,setrlimit函数 getrlimit允许一个进程查询所受的的系统限制.这些系统限制通过一对硬/软限制对来指定。当一个软限制被超过时,进程还可以继续,当然这取决于限 制的类型,同时一个信号会发送给进程。另一方面,进程不可以超过它的硬限制。软限制值可以被进程设置在位于0和最大硬限制间的任意值。硬限制值不能被任何 进程降低,仅仅超级用户可以增加之。转载 2015-01-12 15:52:25 · 814 阅读 · 0 评论 -
Linux core 文件介绍
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示所有的用户定制,其中选项-a代表“a转载 2015-01-12 15:53:55 · 616 阅读 · 0 评论 -
xxxx is deprecated
编译工程发现json_object_object_get is deprecated。最终解决,jason-c库中有声明,@deprecated Please use json_object_object_get_ex。json-c库编译的时候,设定了编译警告的声明,当调用不推荐使用的函数的时候,就会出现此警告。把函数修改为json_object_object_get_ex警告消失。原创 2017-06-02 18:24:09 · 11514 阅读 · 0 评论 -
判断exec是否执行成功的思路
The problem with handling exec failure is that usually exec is performed in a child process, and you want to do the error handling in the parent process. But you can't just exit(errno) because (1)转载 2017-04-11 11:45:35 · 2702 阅读 · 0 评论 -
Linux内核注释——第9章System Ⅴ IPC
Unix从开发的早期就提供了管道的机制,管道在同一机器的两个进程间的双向通信方面工作的相当出色。后来,BSD(Berkeley Software Development)的Unix版本又提供了通用的套接字socket,它用来在不同机器的两个进程之间进行通信(或者是同一机器的)。Unix System V版本增加了被视为一体的三个机制,现在它们被统称为System V IPC。像原创 2009-07-23 11:25:00 · 1660 阅读 · 0 评论 -
linux 信号详解
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一原创 2009-07-23 08:47:00 · 812 阅读 · 0 评论 -
线程的执行的无序性---生产消费者
源程序:#include #include #include #include #include #define BUFSIZE 4#define NUMBER 8int sum_of_number=0;sem_t write_res_number;sem_t read_res_number;struct recycle_buffer{原创 2009-07-23 15:59:00 · 900 阅读 · 0 评论 -
Unix/Linux IPC及线程间通信总结
一、互斥与同步1.互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。2.同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源.3.同步是一种更为复杂的互斥,而互斥是原创 2009-07-24 12:30:00 · 1246 阅读 · 0 评论 -
IPC通信
函数:#includeint semctl(int sem_id, int sem_num, int cmd, ...);int semget(key_t, int num_sems, int sem_flags);int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);struct i原创 2009-07-24 12:31:00 · 1421 阅读 · 0 评论 -
共享内存
shmdt(addr)使进程中的shmid无效化,在本进程中不可以使用。但是保留空间。shmctl(shmid,IPC_RAID,0) 删除共享内存,彻底不可用,释放空间。 注:需要说明的是,当执行 IPC_RMID 操作时,系统并不是立即将其删除,而只是将其标为待删,然后等待与其连接的进程断开连接。只有当所有的连接都断开以后系统才执行真正的删除操作。当原创 2009-07-24 12:45:00 · 954 阅读 · 0 评论 -
UNIX环境编程 终端IO
终端IO终端IO有两种模式: 1. 规范模式。在这种模式下,输入以行为单位进行处理。每次读请求终端驱动都返回一行。 2. 非规范模式。输入字符不编成一行。默认情况下系统采用规范模式。POSIX。1定义了 11种特殊输入字符,它们中的9种可以改变。 Struct termios{ Tcflag_t c_iflag; //input flags原创 2009-07-21 19:41:00 · 1323 阅读 · 0 评论 -
Linux 进程通信之 ——信号和信号量总结
现在最常用的进程间通信的方式有:信号,信号量,消息队列,共享内存。 所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。 1. 信号 在我学习的内容中,主要接触了信号来实原创 2009-07-21 19:46:00 · 12044 阅读 · 0 评论 -
ftok () 函数介绍
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )参数说明: fname就时您指定的文档名 id是子序号。返回值: 在一般的UNIX原创 2009-07-24 11:03:00 · 7138 阅读 · 3 评论 -
shmget
document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (tex原创 2009-07-24 12:17:00 · 3854 阅读 · 0 评论 -
linux 进程信号集合 sigset_t
sigset_t 号集及信号集操作函数:信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t 信号集用来描述信号的集合,linux所支持的所有信号可以全部或部分的出现在信号集中,主要与信号阻塞相关函数配合使用。下面是为信号集操作定义的相关函数: int sigemptyset(sigse原创 2009-07-21 19:35:00 · 7892 阅读 · 1 评论 -
epoll 分析
1.阻塞与非阻塞2.epoll与select3.epoll函数使用4.实例程序原创 2017-08-30 10:13:08 · 322 阅读 · 0 评论