
Unix环境高级编程
iCode王者伟业
一个初出茅庐的愣头青,带着对未来的美好理想踏上了一条光荣的荆棘路。
展开
-
pthread_cleanup_push和pthread_cleanup_pop学习
pthread_cleanup_push:注册线程退出时的处理程序,与进程的atexit函数类似,只是以压栈的方式储存。pthread_cleanup_pop:调用已经压栈的线程退出处理程序,当参数非零。注册的线程退出处理函数仅在以下三种情况下才会被调用:1、调用pthread_exit退出线程时;2、响应取消请求时;3、用非零参数调用pthread_cleanup_pop函数原创 2015-07-03 23:38:38 · 540 阅读 · 0 评论 -
《Unix环境高级编程》学习之Unix标准
常见的标准共有三个:ISO C、POSIX、SUS。ISO C:是C语言标准,是开发语言标准,与任何系统均无关。POSIX:全写是Portable Operating System Interface。是操作系统的接口标准,在后期有包括ISO C这个C语言标准。SUS:全写是Single Unix Specification。是POSIX.1的超集,定义了一些附加接口,扩展了POSIX原创 2015-07-19 23:21:49 · 479 阅读 · 0 评论 -
《Unix环境高级编程》学习之用户
Unix下涉及的用户共有四个。实际用户:当前实际登陆的用户,取自登陆文件。有效用户:实际执行或访问文件的用户,通常与实际用户相同。设置用户:是一个标记,并非真实的用户。当执行文件时,将进程的有效用户设置为文件所有者的用户ID。保存的设置用户:一个临时变量性质的用户,在实际用户和有效用户之间切换,适用于执行命令过程中所需的用户权限切换。下面以两个情景为例:设有用户A、原创 2015-07-19 23:53:16 · 451 阅读 · 0 评论 -
openat函数的用法示例
《Unix环境高级编程》的第三章和第四章出现了大量的以at结尾的函数,如openat、fstatat等,书中只是粗略的说明了下,没有实际的例子让人很难懂。int openat(int dirfd, const char *pathname, int flags, mode_t mode);我初看的时候有如下几个疑问:1、按函数原型明显是要给一个目录的文件描述符,可是打开目录用的事ope原创 2015-08-20 01:23:34 · 13841 阅读 · 6 评论 -
线程的学习(一)
线程的初步重点在线程的创建、分离、退出、同步。线程分离:分离的线程在线程完成后,系统会自动回收他的储存器资源;不分离的线程,如果不pthread_join或者不结束整个进程,系统不会回收资源。线程同步:共有互斥量、读写锁、条件变量、自旋锁、屏障共五种方式。各种同步,只是提供了一种机制,并不是用了以后就会一定实现同步,仍然需要人为的控制使用逻辑才能实现同步。线程退出:1、线程原创 2015-07-08 00:01:47 · 457 阅读 · 0 评论 -
《Unix环境高级编程》学习之编写守护进程
编写规则:1、调用umask将文件模式创建屏蔽字置为一个已知值(通常是0),因为屏蔽字会阻碍某些权限,影响保护进程的执行;2、调用fork,然后父进程exit,保证当前进程不是进程组组长;3、调用setsid,创建一个新的会话;4、再次调用fork,退出父进程,保证守护进程不是会话首进程,这样调用open重定向标准输入、标准输出、标准错误时,就不会被分配终端;原创 2015-10-07 23:06:18 · 708 阅读 · 0 评论 -
《Unix环境高级编程》之popen函数使用
#include int main(){ int nRead = 0; int nWrite = 0; FILE *fd = NULL; char strRead[1024]; fd = popen("ls -l ","r"); /* nRead = read(fileno(fd),strRead,sizeof(strRead)); while(0 != nRead)原创 2016-01-12 14:58:49 · 425 阅读 · 0 评论