UNIX环境高级编程
文章平均质量分 69
溪孟羽
这个作者很懒,什么都没留下…
展开
-
APUE文件和目录
pag72 目录文件:包含其他文件的名字以及指向与这些文件有关信息的指针。(知道目录也时文件) int stat (const char *restrict pathname, struct stat *restrict buf); int fstat (int filedes, struct stat *buf); int lstat (const char *restrict pathname原创 2014-04-30 18:23:59 · 419 阅读 · 0 评论 -
APUE限制
long sysconf (int name); long pathconf (const char *pathname, int name); long fpathconf (int filedes, int name); 守护进程: 在后台运行且不与终端相连的一种进程。常常在系统自举时启动,仅在系统关闭时才停止。原创 2014-04-30 18:55:54 · 399 阅读 · 0 评论 -
信号的自我理解(不知对错)
#include #include #include #include static void sig_handler( int signo ) { printf( "get signal\n" ); } int main( void ) { sigset_t newmask, zeromask; pid_t pid; sigemptys原创 2014-04-30 18:24:23 · 611 阅读 · 0 评论 -
关于使用IO复用和多线程问题
今天突然想到我什么情况下用IO复用什么情况下用多线程呢?于是上网搜浏览转载 2014-05-04 09:10:16 · 1877 阅读 · 0 评论 -
APUE守护进程
pag341 守护进程也称精灵进程,时生存期较长的一种进程。他们常常在系统自举时启动,仅在系统关闭时终止。因为没有控制终端,所以说他们时咋后台运行的。 父进程为0的各进程通常是内核进程,他们作为系统自举过程的一部分而启动。(init是此种进程的例外他是内核在自举时启动的用户层命令) 大多数守护进程都以超级用户(用户ID为0)特权运行。没有一个守护进程具有控制终端,其终端名设置为问号(?),原创 2014-04-30 18:24:55 · 762 阅读 · 0 评论 -
APUE线程控制
pag314 int pthread_attr_init( pthread_attr_t *attr ) //初始化pthread_attr_t结构 int pthread_attr_destroy( pthread_attr_t *attr ) //去初始化;释放动态内存;用无效的值初始化属性对象(被误用会导致pthread_create函数返回错误) 分离线程:线程函数完成后,OS将其资原创 2014-04-30 18:24:35 · 577 阅读 · 0 评论 -
APUE进程间通信
pag398 管道: 局限:只能在具有公共祖先的进程之间使用。通常由一个进程创建然后该进程调用fork,此后父子进程之间就可应用该管道。 int pipe( int filedes[2] ); 经由参数返回两个文件描述符:filedes[0]为读而打开,filedes[1]为写打开。filedes[1]的输出就是filedes[0]的输入。 通常将管道描述符复制为标准输入和标准输出。在此之后原创 2014-04-30 18:24:57 · 703 阅读 · 0 评论 -
APUE高级IO
pag355 低速系统调用: 1、某些文件类型(管道、终端设备、网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞。 2、数据不能立即被上诉同样类型的文件接受(由于在管道中无空间、网络流控制等),则写操作也会使调用者永远阻塞 3、在某种条件发生之前,打开某些类型的文件会被阻塞 4、对已加上强制性记录锁的文件进行读写 5、某些ioctl操作 6、某些进程间通信函数 虽然读写磁盘文件会使调用者原创 2014-04-30 18:24:48 · 474 阅读 · 0 评论 -
APUE习题16.4
客户端: #include #include #include #include #include #include #include #include #include #include #include #define DIRNAME "/proc" #define QUENUM 8 #define MAXSIZE 16 struct s_pronum { in原创 2014-05-10 15:47:08 · 624 阅读 · 0 评论 -
APUE套接字
pag437 套接字描述符在unix系统是用文件描述符实现的。 int socket( int domain, int type, int protocol );//创建套接字 数据报(SOCK_DGRAM)接口,与对方通信时是不需要逻辑连接的(UDP)。只需要送出一个报文,其地址是一个对方进程所使用的套接字。(无连接) 字节流(SOCK_STREAM)要求在交换数据之前(TCP),在本地套接原创 2014-04-30 18:24:59 · 591 阅读 · 0 评论 -
APUE文件和目录
pag71 int stat (const char *restrict pathname, struct stat *restrict buf); int fstat (int filedes, struct stat *buf); int lstat (const char *restrict pathname, struct stat *restrict buf); (link sta原创 2014-04-30 18:51:42 · 503 阅读 · 0 评论 -
APUE习题10-6
这题虽然看起来简单,但是做的时候还是遇到了些问题 贴码: #include signal.h> #include stdio.h> #include sys/types.h> #include stdlib.h> #include fcntl.h> #include string.h> #define MAXSIZE 100 sigset_t zeromask, maskset,原创 2014-04-30 18:25:14 · 746 阅读 · 0 评论 -
APUE系统文件和信息
pag133 这里的各类ID都是针对用户的 口令文件: /etc/passwd文件中的字段(linux)(struct passwd的成员) 用户名---------------------------char *pw_name 加密口令------------------------char *pw_passwd 数值用户ID---------------------uid_t pw_uid 数原创 2014-04-30 18:25:12 · 515 阅读 · 0 评论 -
APUE进程控制
pag171 ID-----0 通常为调度进程,常常被称为交换进程,不执行任何磁盘上的程序,也被称为系统进程。 ID-----1 通常为init进程,通常读与系统有关的初始化文件,并将系统引导到一个状态,init进程绝不会终止。(普通用户进程(与交换进程不同,不是内核中的系统进程),但以超级用户特权运行) pid_t getpid(void);//进程ID pid_原创 2014-04-30 18:24:10 · 423 阅读 · 0 评论 -
对于终端的理解
看APUE时对里面的多种终端概念不是很理解,百度了下 自己写的程序: #include #include int main (void) { printf ("%s\n", ttyname (0)); //输出控制终端 }原创 2014-04-30 18:25:06 · 864 阅读 · 0 评论 -
启动daytime服务
修改/etc/xinetd.d/daytime 将disable = yes 改成disable = no 重启xinetd service xinetd restart ps: 用service daytime restart 或者 用/etc/xinetd.d/daytime restart 都不行 显示permission denied(已经是root权限下了)原创 2014-04-30 18:25:08 · 749 阅读 · 0 评论 -
APUE标准IO
pag111 流定向决定了所读、写的字符是单字节还是多字节的。 int fwide(FILE *fp, int mode);//设置流定向 文件描述符: STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO 文件指针: stdin、stdout、stderr 默认缓冲机制 标准出错---------------------不带缓冲 终端设备流------------原创 2014-04-30 18:24:01 · 534 阅读 · 0 评论 -
APUE进程环境
pag147 main执行前: 调用一个特殊的启动例程 可执行程序文件将此启动例程指定为程序的起始地址 启动例程从内核取得命令行参数和环境变量值 void exit(int status); void _Exit(int status); void _exit(int status); _exit和_Exit立刻进入内核,exit则先执行一些清理处理,然后进入内核。 echo $? 打印终止状原创 2014-04-30 18:24:03 · 367 阅读 · 0 评论 -
APUE进程关系
pag214 登录简易流程: init进程fork子进程exec执行getty getty开启终端设备以便输入,显示Login: 用户输入用户名 getty程序exec执行login程序 login由用户名(getpwnam)获取pw结构,显示Password: 用户输入密码 login程序比对pw结构中pw_passwd pag218 进程组使一个或多个进程的集合,通常他们与同一作业相关联原创 2014-04-30 18:24:12 · 492 阅读 · 0 评论 -
APUE线程
pag288 进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。 进程ID在整个系统中是唯一的,线程ID只在他所属的进程环境中有效。 int pthread_equal(pthread_t tid1, pthread_t tid2);//比较线程ID pthread_t pthread_self(void);//获得自身线程ID int原创 2014-04-30 18:24:27 · 468 阅读 · 0 评论 -
在CSDN看到为一段关于阻塞方面的知…
read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这 些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,也会产生 阻塞的read效果。原创 2014-04-30 18:24:46 · 461 阅读 · 0 评论 -
APUE文件IO
文件描述符 0 标准输入(STDIN_FILENO) 1 标准输出(STDOUT_FILENO) 2 标准出错(STDERR_FILENO) pag48 int open (const char *pathname, int flag, ...); //打开或创建一个文件原创 2014-04-30 18:25:10 · 499 阅读 · 0 评论 -
APUE信号
pag233 信号都被定义为正整数。 不存在编号为0的信号。 不能捕捉SIGKILL和SIGSTOP信号。 信号的处理: 1,忽略信号 2,捕捉信号 3,执行系统默认动作(大多数信号默认动作时终止进程) void (*signal (int signo, void (*fun)(int)))(int) fun: 1、SIG_IGN 忽略信号 2、SIG_DFL 默认(通常时关闭) 3、调用函数原创 2014-04-30 18:24:25 · 694 阅读 · 0 评论