
unix环境高级编程
文章平均质量分 82
qiqijianglu
这个作者很懒,什么都没留下…
展开
-
由unix环境高级编程程序清单8-1fork()引发对缓冲的思考
最近刚看unix环境高级编程这本书,对于缓冲的概念总是比较模糊,当看到这段程序程序的时候,就细细的琢磨了一番,终于对于缓冲的概念有了一个新的认识,并且也加深了对于fork()的理解。首先看下这段程序173.c#include "apue.h"int glob=6;char buf[]="a write to stdout\n"; int main(void){ int va原创 2013-01-09 12:04:44 · 1259 阅读 · 0 评论 -
linux解释器原理
对于会shell编程的人肯定不会对#!/bin/sh感到陌生。这一行字符串到底意味着什么呢?应该明确,所谓解释器就是指#!行后面的可执行程序。 我们从exec函数说起。exec函数总共包括六个函数。#include int execl(const char *pathname,const char *arg0,.../*(char *)0 */);int execv(c原创 2013-01-12 12:48:51 · 5696 阅读 · 3 评论 -
linux 分析 ptrace()
形式#include int ptrace(int request, int pid, int addr, int data);描述Ptrace 提供了一种父进程可以控制子进程运行,并可以检查和改变它的核心image。它主要用于实现断点调试。一个被跟踪的进程运行中,直到发生一个信号。则进程被中止,并且通知其父进程。在进程中止的状态下,进程的内存空间可以被读写。父进程还可以使子进原创 2013-02-01 17:18:26 · 1595 阅读 · 0 评论 -
linux用互斥量进行同步
#include #include #include #include #include #include void *thread_function(void *arg);pthread_mutex_t work_mutex; #define WORK_SIZE 1024char work_area[WORK_SIZE];int time_to_exit=0;int原创 2013-04-08 16:58:58 · 2348 阅读 · 1 评论 -
linux 进程间通信(IPC)一信号量
#include#include#include#include#include#includeunion semun{ int val; struct semid_ds *buf; unsigned short *array;};static int set_semvalue(void);static void del_semvalue(void)原创 2013-04-15 14:21:55 · 1289 阅读 · 0 评论 -
linux 进程间通信(IPC)一共享内存
共享内存为多个进程之间共享和传递数据提供了一种有效的方式,未提供同步机制,我们需要用其他的机制来同步对共享内存的访问。共享内存使用的函数:#include void *shmat(int shm_id,const void *shm_addr,int shmflg);第一次创建共享内存段时,它不能被任何进程访问,要想启用对该共享内存的访问,必须将其连接到一个进程的地址空间中原创 2013-04-15 16:27:47 · 939 阅读 · 0 评论 -
linux 进程间通信(IPC)一消息队列
消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法。与命名管道相比,消息队列的优势在于,它独立于发送和接收进程而存在,这消除了在同步命名管道的打开和关闭时可能产生的一些困难。我们可以通过发送消息来几乎完全避免命名管道的同步和阻塞问题。但是与管道一样,每个数据块都有一个最大限度的长度限制。消息队列的函数:#include int msgctl(原创 2013-04-15 17:27:17 · 993 阅读 · 0 评论 -
linux用信号量进行同步
信号量一般常用来保护一段代码,使其每次只能被一个执行线程运行。以下这段程序在主线程中,我们等待直到有文本输入,然后调用sem_post增加信号量的值,这将立刻令另一个线程从sem_wait的等待中返回并开始执行。在统计完字符个数后,它再次调用sem_wait并再次被阻塞,直到主线程再次调用sem_post增加信号量的值为止。#include#include#include原创 2013-04-08 15:22:46 · 2061 阅读 · 0 评论 -
多进程和多线程这件事
接触多线程多进程也有一段时间了,鉴于总是健忘的缘故,还是整理整理放到博客。先来说说进程和线程:我理解的进程就是程序的一次执行活动,是系统进行资源分配和调度的一个独立单位,程序是静态的,进程是动态的。而引入线程的目的,我认为主要有以下四个优点:(1)易于调度。(2)提高并发性。通过线程可以方便有效地实现并发。(3)开销小。(4)有利于发挥多处理器的功能。通过创建多线程,每原创 2013-05-14 20:11:50 · 1284 阅读 · 0 评论