- 博客(13)
- 资源 (6)
- 收藏
- 关注
原创 函数signal
UNIX系统信号机制最简单的接口是signal函数。#include void (*signal(int signo, void (*func)(int)))(int); 返回值:若成功,返回以前的信号处理配置;若出错,返回SIG_ERRsigno参数如下。fun
2015-01-25 11:51:19 662
原创 函数wait和waitpid
当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件。所以这种信号也是内核向父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即使被调用执行的函数。对于这种信号的系统默认动作时忽略它。对于wait和waitpid函数。如果其所有子进程都还在运行,则阻塞。如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立
2015-01-24 19:24:29 642
原创 fgetc getc函数
一旦打开了流,则可以在3中不同的类型的非格式化I/O中进行选择,对其进行读、写操作。(1)每次一个字符的I/O。一次读或写一个字符,如果流是带缓冲的,则标准I/O函数处理所有缓冲。(2)每次一行的I/O。如果想要一次读或写一行,则使用fgets和fputs。每行都以一个换行符终止。当调用fgets时,应说明能处理的最大行长。(3)直接I/O。fread和fwrite函数支持这种类型的I
2015-01-23 20:24:36 2376
原创 打开流
下列3个函数可以用来打开一个标准I/O流#include FILE *fopen(const char *restrict pathname, const char *restrict type);FILE *freopen(const char *restrict pathname, const char *restrict type, FILE *restrict fp);FILE
2015-01-23 19:07:37 706
原创 linux 文件长度 文件截断 rename renameat
文件长度stat结构成员st_size表示以字节为单位的文件的长度。此字段只对普通文件、目录文件和符号链接文件有意义。对于普通文件,其文件长度可以是0,在开始读这种文件时,将得到文件结束指示。对于目录,文件长度通常是一个数的整倍数。对于符号链接,文件长度是在文件名中的实际字节数。例如,在下面的例子中,文件长度15就是路径名/usr/lib的长度:lrwxrwxrwx 1 ro
2015-01-23 16:06:25 4395
原创 函数access和faccessat函数
当用户open打开一个文件时,内核以进程的有效用户ID和有效组ID为基础执行其访问权限测试。有时,进程也希望按其他实际用户ID和实际组ID来测试其访问能力。例如,当一个进程使用设置用户ID或设置组ID功能作为另一个用户运行时,就可能会有这种需要。即使一个进程可能已经通过设置用户ID以超级用户权限运行,它仍可能想验证其实际用户能否访问一个给定的文件。access和faccessat函数是按照实际用户
2015-01-23 13:39:57 3678
原创 linux文件访问权限
所有文件类型都有访问权限。对于st_mode值也包含了对文件的访问权限位。每个文件有9个访问权限,可将它们分为3类。st_mode屏蔽含义S_IRUSR用户读S_IWUSR用户写S_IXUSR用户执行S_IRGRP组读
2015-01-22 22:48:32 717
原创 read函数和write函数
用read函数从打开的文件中读取数据。#incldue ssize_t read(int fd, void *buf, size_t nbyte);返回值:读到的字节数,若已到文件尾,返回0;若出错,返回-1如果read成功,则返回读到的字节数,如已到达文件的尾端,则返回0.有多种情况可使实际读到的字节数少于要求的字节数:读普通文件时,在读到要求字节数之前到达了文件尾端。例如
2015-01-22 19:40:08 2338
原创 lseek函数
每个打开的文件都有一个与之相关联的“当前文件偏移量”,它通常是一个非负整数,用以度量从文件开始处计算的字节数。通常,读、写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数。按系统默认的情况,当打开一个文件时,除非制定O_APPEND选项,否则该偏移量被设置为0.可以调用lseek显式地打开一个文件设置偏移量。#include off_t lseek(int fd, off_t
2015-01-22 11:56:46 1303
原创 UDP协议/套接字
每个套接字都有一个发送缓冲区和一个接受缓冲区。接收缓冲区被TCP、UDP和SCTP用来保存接收到的数据,直到由应用进程来读取。对于TCP来说,套接字接收缓冲区中可用空间的大小限定了TCP通告对端的窗口。TCP套接字接收缓冲区不可能溢出,因为不允许对端发出超过本端所通告窗口大小的数据。这就是TCP的流量控制。如果对端无视窗口大小而发出来了超过该窗口大小的数据,本端TCP将丢弃它们。然而对于UDP
2015-01-17 21:14:57 732
原创 shutdown函数
终止网络连接的通常方法是调用close函数,不过close有两个限制,却可以使用shutdown来避免。(1)close把描述符的引用计数减1,仅在该计数变为0时才关闭套接字,使用shutdown可以不管引用计数就激发TCP的正常连接终止序列。(2)close终止读和写两个方向的数据传送。既然TCP连接是全双工的,有时我们需要告知对端我们已经完成了数据发送,即使对端任然有数据要发送给我们。
2015-01-16 21:33:03 1112
原创 套接字I/O模型
在UNIX下可用的5种I/O模型为:柱塞I/O模型非柱塞I/O模型I/O复用(select和poll)信号驱动式I/O(SIGIO)异步I/O柱塞式I/O模型最流行的I/O模型是柱塞式I/O模型,默认情况下所有套接字都是用柱塞的,以数据报套接字为例子,如图:进程调用recvfrom,其系统调用指导数据报到达且被复制到应用进程的缓冲区中或发生错误才返回
2015-01-16 12:46:50 685
原创 unp.h undefined reference to `Socket'
关于unp.h在linux上的配置问题。由于UINX网络编程这本书,使用了自己的头文件--unp.h,所以,如我们自己学习书上的源代码时,需要我们自己配置头文件来。首先在官网www.unpbook.com,主页上去下载UNIX网络编程这本书的源码,并解压tar -jxvf ...tar.bz2,解压完成后,$./configure然后,进入lib目录下运行make,编译完成后,在解
2015-01-12 23:23:49 2450
unpv13e.zip
2015-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人