![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNIX环境高级编程
文章平均质量分 69
溪孟羽
这个作者很懒,什么都没留下…
展开
-
APUE文件和目录
pag72目录文件:包含其他文件的名字以及指向与这些文件有关信息的指针。(知道目录也时文件)int stat (const char *restrictpathname, struct stat *restrict buf);int fstat (int filedes, struct stat*buf);int lstat (const char *restrictpathname原创 2014-04-30 18:23:59 · 403 阅读 · 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 · 389 阅读 · 0 评论 -
信号的自我理解(不知对错)
#include#include#include#includestatic voidsig_handler( int signo ){ printf( "getsignal\n" );}intmain( void ){ sigset_t newmask,zeromask; pid_t pid; sigemptys原创 2014-04-30 18:24:23 · 602 阅读 · 0 评论 -
关于使用IO复用和多线程问题
今天突然想到我什么情况下用IO复用什么情况下用多线程呢?于是上网搜浏览转载 2014-05-04 09:10:16 · 1867 阅读 · 0 评论 -
APUE守护进程
pag341守护进程也称精灵进程,时生存期较长的一种进程。他们常常在系统自举时启动,仅在系统关闭时终止。因为没有控制终端,所以说他们时咋后台运行的。父进程为0的各进程通常是内核进程,他们作为系统自举过程的一部分而启动。(init是此种进程的例外他是内核在自举时启动的用户层命令)大多数守护进程都以超级用户(用户ID为0)特权运行。没有一个守护进程具有控制终端,其终端名设置为问号(?),原创 2014-04-30 18:24:55 · 751 阅读 · 0 评论 -
APUE线程控制
pag314int 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 · 565 阅读 · 0 评论 -
APUE进程间通信
pag398管道:局限:只能在具有公共祖先的进程之间使用。通常由一个进程创建然后该进程调用fork,此后父子进程之间就可应用该管道。int pipe( int filedes[2] );经由参数返回两个文件描述符:filedes[0]为读而打开,filedes[1]为写打开。filedes[1]的输出就是filedes[0]的输入。通常将管道描述符复制为标准输入和标准输出。在此之后原创 2014-04-30 18:24:57 · 694 阅读 · 0 评论 -
APUE高级IO
pag355低速系统调用:1、某些文件类型(管道、终端设备、网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞。2、数据不能立即被上诉同样类型的文件接受(由于在管道中无空间、网络流控制等),则写操作也会使调用者永远阻塞3、在某种条件发生之前,打开某些类型的文件会被阻塞4、对已加上强制性记录锁的文件进行读写5、某些ioctl操作6、某些进程间通信函数虽然读写磁盘文件会使调用者原创 2014-04-30 18:24:48 · 461 阅读 · 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 · 611 阅读 · 0 评论 -
APUE套接字
pag437套接字描述符在unix系统是用文件描述符实现的。int socket( int domain, int type, intprotocol );//创建套接字数据报(SOCK_DGRAM)接口,与对方通信时是不需要逻辑连接的(UDP)。只需要送出一个报文,其地址是一个对方进程所使用的套接字。(无连接)字节流(SOCK_STREAM)要求在交换数据之前(TCP),在本地套接原创 2014-04-30 18:24:59 · 579 阅读 · 0 评论 -
APUE文件和目录
pag71int 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 · 492 阅读 · 0 评论 -
APUE习题10-6
这题虽然看起来简单,但是做的时候还是遇到了些问题贴码:#include signal.h>#include stdio.h>#include sys/types.h>#include stdlib.h>#include fcntl.h>#include string.h>#defineMAXSIZE 100sigset_t zeromask, maskset,原创 2014-04-30 18:25:14 · 733 阅读 · 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 · 507 阅读 · 0 评论 -
APUE进程控制
pag171ID-----0 通常为调度进程,常常被称为交换进程,不执行任何磁盘上的程序,也被称为系统进程。ID-----1 通常为init进程,通常读与系统有关的初始化文件,并将系统引导到一个状态,init进程绝不会终止。(普通用户进程(与交换进程不同,不是内核中的系统进程),但以超级用户特权运行)pid_t getpid(void);//进程IDpid_原创 2014-04-30 18:24:10 · 409 阅读 · 0 评论 -
对于终端的理解
看APUE时对里面的多种终端概念不是很理解,百度了下自己写的程序:#include #includeintmain (void){ printf("%s\n", ttyname (0)); //输出控制终端}原创 2014-04-30 18:25:06 · 850 阅读 · 0 评论 -
启动daytime服务
修改/etc/xinetd.d/daytime将disable = yes改成disable = no重启xinetdservice xinetd restartps:用service daytime restart或者用/etc/xinetd.d/daytime restart都不行显示permission denied(已经是root权限下了)原创 2014-04-30 18:25:08 · 736 阅读 · 0 评论 -
APUE标准IO
pag111流定向决定了所读、写的字符是单字节还是多字节的。int fwide(FILE *fp, intmode);//设置流定向文件描述符:STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO文件指针:stdin、stdout、stderr默认缓冲机制标准出错---------------------不带缓冲终端设备流------------原创 2014-04-30 18:24:01 · 513 阅读 · 0 评论 -
APUE进程环境
pag147main执行前:调用一个特殊的启动例程可执行程序文件将此启动例程指定为程序的起始地址启动例程从内核取得命令行参数和环境变量值void exit(int status);void _Exit(int status);void _exit(int status);_exit和_Exit立刻进入内核,exit则先执行一些清理处理,然后进入内核。echo $? 打印终止状原创 2014-04-30 18:24:03 · 354 阅读 · 0 评论 -
APUE进程关系
pag214登录简易流程:init进程fork子进程exec执行gettygetty开启终端设备以便输入,显示Login:用户输入用户名getty程序exec执行login程序login由用户名(getpwnam)获取pw结构,显示Password:用户输入密码login程序比对pw结构中pw_passwdpag218进程组使一个或多个进程的集合,通常他们与同一作业相关联原创 2014-04-30 18:24:12 · 483 阅读 · 0 评论 -
APUE线程
pag288进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。进程ID在整个系统中是唯一的,线程ID只在他所属的进程环境中有效。int pthread_equal(pthread_t tid1,pthread_t tid2);//比较线程IDpthread_t pthread_self(void);//获得自身线程IDint原创 2014-04-30 18:24:27 · 448 阅读 · 0 评论 -
在CSDN看到为一段关于阻塞方面的知…
read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,也会产生阻塞的read效果。原创 2014-04-30 18:24:46 · 449 阅读 · 0 评论 -
APUE文件IO
文件描述符0 标准输入(STDIN_FILENO)1 标准输出(STDOUT_FILENO)2 标准出错(STDERR_FILENO)pag48int open (const char *pathname, intflag, ...); //打开或创建一个文件原创 2014-04-30 18:25:10 · 482 阅读 · 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 · 683 阅读 · 0 评论