linux_系统编程
beginning1126
这个作者很懒,什么都没留下…
展开
-
linux 定时器
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用转载 2013-01-24 16:27:53 · 556 阅读 · 0 评论 -
进程组、会话
进程组 一个或多个进程的集合 进程组ID: 正整数 两个函数 getpgid(0)=getpgrp()eg:显示子进程与父进程的进程组id 1 #include 2 #include 3 #include 4 5 int main() { 6 pid_t pid; 7 8 if ((pid=fork())0) {转载 2013-09-01 19:55:58 · 817 阅读 · 0 评论 -
linux 进程间通信方法综合分析
进程间通信,常用的方法有,pipe、popen(pclose)、命名pipe、Unix域套接字、消息队列、信号量、记录锁、共享内存。这么多方法,到底不同方法应用场景是怎样的呢。原创 2013-10-11 18:10:06 · 2301 阅读 · 0 评论 -
linux 信号量解析
当我们在多用户系统,多进程系统,或是两者混合的系统中使用线程操作编写程序时,我们经常会发现我们有段临界代码,在此处我们需要保证一个进程(或是一个线程的执行)需要排他的访问一个资源。信号量有一个复杂的编程接口。幸运的是,我们可以很容易的为自己提供一个对于大多数的信号量编程问题足够高效的简化接口。为了阻止多个程序同时访问一个共享资源所引起的问题,我们需要一种方法生成并且使用一个标记从而保证在临转载 2013-10-09 18:29:46 · 2556 阅读 · 0 评论 -
linux 信号signal和sigaction理解
今天看到unp时发现之前对signal到理解实在浅显,今天拿来单独学习讨论下。signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下: 1 #include 2 #include 3 #include 4 5 void ouch(int sig) 6 { 7原创 2013-03-16 12:29:35 · 45907 阅读 · 6 评论 -
UNIX系统中wait函数簇和SIGCLD信号的关系
有朋友疑惑“为什么有了wait函数族还需要使用SIGCHLD信号?”。本文详细地阐述UNIX系统中wait函数族和SIGCHLD信号的关系。 一、unix中僵尸进程的含义 关于unix中僵尸进程的含义:凡是父进程没有调用wait函数获得子进程终止状态的子进程在终止之后都是僵尸进程,这个概念的关键一点就是父进程是否调用了wait函数。 二、SIGCHLD信号 SIGCHL原创 2013-09-15 17:29:49 · 2647 阅读 · 2 评论 -
linux 文件I/O
1、文件描述符,和标准C不用,其使用数字来表示,需要特殊说明的是。0 标准输入、1 标准输出、2 标准错误输出。2、open函数,需要说明是其flag,O_RDONLY:只读打开O_WRONLY:只写打开O_RDWR:读、写打开----------------------------------上面3个是互斥的,只能选一种这几个是或关系,常用的组合O_RDWR |原创 2013-08-10 18:49:26 · 1011 阅读 · 0 评论 -
linux之getopt 函数
命令行参数解析函数 —— getopt()getopt()函数声明如下:#include int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;extern int optind, opterr, optopt;转载 2013-08-01 14:58:57 · 738 阅读 · 0 评论 -
linux 条件变量
1. 相关函数 #include pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_i转载 2013-07-18 14:37:11 · 684 阅读 · 0 评论 -
unix 进程控制
fork,创建子进程1、子进程是父进程的副本,会得到父进程全局、栈、堆上数据的副本,简单说就复制一份其全局、栈、堆上 的内存;2、当然对于上述内存,不是fork之后马上复制,而是写时复制;3、子进程得到父进程描述符副本,但是文件是共享的,同时父子进程同时写文件,不会照成混乱,因为文件偏移量对于俩进程是共享的;当然对于描述符的操作,通常有如下2场景:1、父进程等待子进程结原创 2013-07-11 11:51:52 · 745 阅读 · 0 评论 -
信号量和互斥锁之前的区别
之前一直没有怎么关注过这个问题,前些日子在面试一家公司的时候,面试官提到了pthread_cond_wait/pthread_cond_signal的实现,当时答的不是很好,回来就查了nptl的代码。前天,水木上又有人问到了信号量和互斥锁的问题,我想还是对它们的区别与实现总结一下。 首先了解一些信号量和线程互斥锁的语义上的区别: >>>>>>>>>>>>>>>>>>>>>>>>>>转载 2013-07-09 20:51:21 · 902 阅读 · 0 评论 -
线程私有数据
#include #include #include #include static pthread_key_t str_key;static pthread_once_t str_alloc_key_once=PTHREAD_ONCE_INIT;static void str_alloc_key();static void str_alloc_destroy_accu(void转载 2013-06-06 16:29:47 · 635 阅读 · 0 评论 -
rsyslog使用
1、rsyslog配置文件,/etc/rsyslog.conf,在配置文件中加入如下配置项。local2.* /var/log/udp_send/udp_send.loglocal2.* /var/log/udp_send/udp_send.log2、在/etc/logrotate.d/目录下,加入log文件配置项,新建立配置文件。内容如下:/var/log/u原创 2013-09-27 17:05:38 · 8168 阅读 · 1 评论