代码改变世界

UNIX 标准与实现中限制和选项

2009-11-02 19:16 by htc开发, 145 阅读, 0 推荐, 收藏, 编辑
摘要:一.前言 我们在学习《UNIX环境高级编程》这本书,刚开始就会感到晦涩的就是第二章的内容----UNIX标准与实现。刚开始看确实比较难懂,往往我们会先放一放,后面的很多章节都提到了这方面的内容,等到时候在回顾,或许就会感到霍然开朗! 这本书,我也刚刚看完,感觉还是有很多地方没有掌握,所以在回顾一下,温故而知新嘛。二.限制1.哪些限制 为了更好的可移植性,UNIX提供了一些限制,它们定义在头文件<limit.h>中,其中两种限制是必须的: (1). 编译时限制 (2).运行时限制 编译时限制一般是在头文件中定义的,我们可以通过这样的形式来查看它: 例如:我们要查看ARG_MAX这个限 阅读全文

用户ID,组ID 文件访问权限,文件与进程属性浅析

2009-11-01 11:09 by htc开发, 212 阅读, 0 推荐, 收藏, 编辑
摘要:APUE中用户ID,组ID 文件访问权限,文件与进程属性浅析首先列出一图表 与每个进程相关的用户ID与组ID实际用户ID我们实际上是谁实际组ID有效用户ID用于文件访问权限检查有效组ID附加组ID保存的设置用户ID由exec函数保存保存的设置组ID上面这个图表书中本来就有,呆会儿在做详悉介绍一.首先必须了解文件的访问权限,在书中是第四章的内容同文件访问权限相关的有umask,satat,chmod通常在shell命令中我们可以通过umask设置文件访问权限掩码,创建一个文件,如果随后需要修改文件的访问权限的话,可以接着使用chmod命令修改文件访问权限1.什么是文件访问权限?通俗的讲,文件访. 阅读全文

APUE学习笔记(20)-文件记录锁

2009-10-27 11:18 by htc开发, 216 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第14章。2. 总结了文件记录锁的基本概念和使用方法。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。记录锁记录锁(record locking)的功能是:锁定文件中的一个区域(也可能是整个文件),使得当一个进程正在读或修改文件的某个部分时,它可以阻止其它进程修改同一文件区。其互斥规则与读写锁相同。POSIX.1标准使用fcntl函数作为记录锁的接口。#include <fcntl.h>int fcntl(int filedes, int cmd, ... /* struct flock *flockptr */ 阅读全文

APUE学习笔记(21)-IO多路转接

2009-10-27 11:18 by htc开发, 224 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第14章。2. 总结了IO多路转接的概念,以及select、pselect和poll函数的用法。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。IO 多路转接当从一个文件描述符读,然后写到另一个文件描述符,可以在下列形式的循环中使用阻塞IO。while ((n = read(STDIN_FILENO, buf, BUFSIZ)) > 0) if (write(STDOUT_FILENO, buf, n) != n) err_sys("write error");但是,如果必须从两个描述符读,那么就可能 阅读全文

APUE学习笔记(15)-线程同步

2009-10-27 11:16 by htc开发, 114 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第11章。2. 总结了线程同步的三种方法:互斥量、读写锁以及条件变量。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。线程同步是一个老话题了。当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图。APUE介绍的线程同步方式有:互斥量互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。互斥变量用pthread_mutex_t数据类型来表示,在使用前必须对其进行初始化。对于静态分配的互斥量,可以把它设置为常量PTHREAD_MUTEX_INITIALIZER。如果动 阅读全文

APUE学习笔记(9)-进程关系

2009-10-27 11:14 by htc开发, 186 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第9章。2. 总结了关于进程关系和作业控制的一些概念。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。l 可以用ps -o pid,ppid,pgrp,session,tpgid,comm命令,显示进程ID,父进程ID,进程组ID,会话ID,前台进程组ID和命令。l 每个进程除了有一个进程ID之外,还属于一个进程组。进程可以通过调用setpgid加入一个现有的组或者创建一个新进程组。l 每个进程组有一个组长进程,其标识是:进程组ID等于其进程ID。只要组中有一个进程存在,则该进程组就存在,这与组长进程是否终止无关。从进程组创建 阅读全文

APUE学习笔记(8)-执行程序

2009-10-27 11:13 by htc开发, 155 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第8章。2. 总结了如何使用exec函数族为新创建的进程执行程序。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。execfork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,包括进程的正文、数据、堆和栈,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。在执行exec前后实际用户ID和实际组ID也保持不变,但有效ID是否改变取决于所执行程序文件的设置用户ID位和设置组ID位是否设置。 有6种不同 阅读全文

APUE学习笔记(6)-创建进程

2009-10-27 11:12 by htc开发, 116 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第8章。2. 总结了如何使用fork函数创建进程,以及父子进程间的一些关系。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。fork一个现有进程可以调用fork函数创建一个新进程。fork函数被调用一次,但返回两次。两次返回的唯一区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程ID。原因在于,一个进程可以有多个子进程,并且没有一个函数可以获得所有子进程的进程ID;而一个进程只会有一个父进程,并且总能使用getppid获得其父进程的ID。如果系统中已经有太多的进程或者该实际用户ID的进程总数超过了系统限制(CHILD 阅读全文

APUE学习笔记(7)-僵死进程

2009-10-27 11:12 by htc开发, 162 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第8章。2. 总结了进程终止方式和僵死进程的概念,以及使用wait函数获取子进程的终止状态。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。进程终止方式进程有5种正常终止方式:l 在main函数内执行return语句。l 调用exit函数。此函数由ISO C定义,其操作包括调用各终止处理程序(用atexit函数注册),然后关闭所有标准IO流等。l 调用_exit或_Exit函数,并不运行终止处理程序和信号处理程序。l 进程的最后一个线程在其启动例程中执行返回语句。但是,该线程的返回值不会用作进程的返回值,进程以终止状态0返回。 阅读全文

APUE学习笔记(5)-设置用户ID

2009-10-27 11:11 by htc开发, 150 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面1. 本文内容对应《UNIX环境高级编程》(第2版)》第4章。2. 总结了用户ID和文件访问权限检查的概念,以及设置用户ID的用法。3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。用户ID一个进程与两类ID相关:l 实际用户ID和实际组ID,用于标识用户究竟是谁。这两个字段在登录时取自口令文件中的登录项。可以使用getuid和getgid函数查询。l 有效用户ID和有效组ID,与附加组ID一起,用于文件访问权限检查。可以使用geteuid和getegid函数查询。通常,等于实际用户ID和实际组ID。一个文件仅将其所有者ID和所有组ID记录在stat结构的st_uid和st_gid 阅读全文
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 53 下一页