UNIX环境高级编程——环境变量表读取/添加/修改/删除
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char* pValue;pValue = getenv("HOME"); // 起始目录(主目录) printf("$HOME ...
《UNIX环境高级编程》学习心得 二
窝萌来看我们看到这本书里的第一个程序 #include "apue.h" #include <dirent.h> int main(int argc, char *argv[]) { DIR *dp; struct dirent *di...
UNIX环境高级编程——I/O多路转接(select、pselect和poll)
I/O多路转接:先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个已准备好进行I/O时,该函数才返回。在返回时,它告诉进程哪些描述符已准备好可以进行I/O。poll、pselect和select这三个函数使我们能够执行I/O多路转接。一、select函数在所有依从POSIX的平台上...
UNIX环境高级编程-第三章习题
1,当读写磁盘文件时,read,write等函数确实是不带缓冲机制的吗?请说明原因。答:所有磁盘I/O都要经过内核的块缓存区(即内核的缓冲区高速缓存)。唯一例外的是对原始磁盘设备的I/O,但是我们不考虑这种情况。既然read或write的数据都要被内核缓冲,那么术语“不带缓冲的I/O”指的是在用户的...
UNIX环境高级编程 第11章 线程
使用C++调用pthread_cleanup_push( )时,下面的代码是无法编译通过的:pthread_cleanup_push(cleanup, "thread 1 first handler");如果编译,则编译器可能会提示:no matching constructor for initi...
UNIX环境高级编程——主线程与子线程的退出关系
我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。1、 主线程等待新线程先结束退出,主线程后退出。正常执行。示例代码:#include <stdio.h>#include <stdlib.h>#include <p...
解决《UNIX环境高级编程》(APUE)示例代码的编译问题
转自 http://cunsheng.sinaapp.com/?p=360APUE中示例很多, 把这些源码拿来跑跑调调对学习理解有着莫大的帮助, 随书网站就提供了源码下载, 不过我自己在Linux和Mac OS X编译时都遇到了一些小问题, 以下是解决方法和其他一些提示, 希望能对其他人有用下载了源...
《UNIX环境高级编程》笔记--更改用户ID和组ID
在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己用户ID或组ID,使的新ID具有合适的特权或访问权限。与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要更换用户ID或组ID,从而使新ID不具有相应特权或访问这些资源的能力...
UNIX环境高级编程——文件和目录
一、获取文件/目录的属性信息int stat(const char *path, struct stat *buf);int fstat(int fd, struct stat *buf);int lstat(const char *path, struct stat *buf);struct st...
Linux - Unix环境高级编程(第三版) 代码编译
Unix环境高级编程(第三版)代码编译本文地址:http://blog.csdn.net/caroline_wendy时间:2014.10.21.下载代码:http://www.apuebook.com/code3e.html2.安装依赖库:sudo apt-get install libbsd-d...
UNIX环境高级编程 第7章 进程环境
main函数:C程序或C++程序总是从main函数开始执行的,其中这个总是从main函数开始执行是我们人为约定的,当然现在从main函数开始执行已经成为语言标准了,在汇编层次,我们可以把程序起始执行地址指向一个自定义的名字。 书本上7.2节这里的翻译很是生硬,字面意思直接翻译过来,让人不太好理解,原...
UNIX环境高级编程——计算机体系结构基础知识
无论是在CPU外部接总线的设备还是在CPU内部接总线的设备都有各自的地址范围,都可以像访问内存一样访问,很多体系结构(比如ARM)采用这种方式操作设备,称为等都会产生异常。通常操作系统把虚拟地址空间划分为。条汇编指令,系统调用只是进入内核程序的一个接口,内核调用内核函数(如中断异常服务程序,实现各种...
《UNIX环境高级编程》学习心得 四 文件I/O(一)
这里说的文件I/O是相对标准I/O来说的。主要介绍在UNIX系统中常用的五个文件I/O函数:open、read、write、lseek、以及close。一、open和opennat#include<fcntl.h>intopen(constchar*path,intoflag,.../*...
Mac OS X 10.8 中编译APUE(Unix环境高级编程)的源代码过程
这篇文章主要介绍了Mac OS X 10.8 中编译APUE(Unix环境高级编程)的源代码过程,对于用MAC学习Unix环境高级编程的同学会有些作用,需要的朋友可以参考下
UNIX环境高级编程第三版源码编译
UNIX环境高级编程第三版源码编译遇到的问题一、问题描述:make,遇到错误:cannotfind-lbsd。二、原因:缺少缺少libbsd文件。三、解决方法:1、Fedora系列(通过yum来下载更新软件)#yuminstalllibbsd#yuminstalllibbsd-devel安装完成后就...
《unix环境高级编程·第三版》源代码编译及使用
《unix环境高级编程·第三版》源代码编译及使用《unix环境高级编程》中有很多示例代码需要包含作者自定义的头文件,如"apue.h"。这些代码可以从以下网址下载http://apuebook.com/code3e.html1.解压文件tar-zxvfsrc.3e.tar.gz2.安装libbsd-...
UNIX环境高级编程——无名管道和有名管道
一、进程间通信每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcessCommu...
《UNIX环境高级编程》读书笔记之进程控制
1.进程标识每个进程都有非负整型标示的唯一进程ID。系统中有一些特殊的进程,如ID为0的进程为调度进程,常被称为交换进程(swapper)。进程ID为1的进程为init进程,此进程负责启动UNIX系统。init进程是一个普通的用户进程,但是它是以超级用户权限运行的。init进程会成为所有孤儿进程(父...
apue.h头文件(UNIX环境高级编程)
在看UNIX环境高级编程是,碰到一个头文件"apue.h",搜一下别人的帖子,其实apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。apue.h内容如下:#ifndef _APUE_H#define _APUE_H...
I/O多路转接 --- UNIX环境高级编程
I/O多路转接技术:先构造一张有关描述符的列表,然后调用一个函数,知道这些描述符中的一个已准备好进行I/O时,给函数才返回。在返回时,它告诉进程哪些描述符已准备好可以进行I/O。poll、select、pselect这三个函数使我们能够执行I/O多路转接。1.select和pselect函数I/O多...