unix & linux书籍
文章平均质量分 82
kc专栏
深入探索android Framework层代码,博客持续更新中!!!
展开
-
unix编程(四)进程控制
fork函数fork创建子进程,子进程是父进程的副本,会得到父进程数据空间、堆、栈的副本。然后文件的共享这块也比较复杂,父进程和子进程各自都有文件描述符表,但是文件表示公用的(而一般两个进程,文件表是每个进程独有的),也就是说文件的偏移量是一致。一个文件在父进程中打开,在子进程中也会被打开一遍,因此如果在子进程中不使用这个文件,先要close这个文件。vfork函数原创 2016-04-27 08:55:18 · 471 阅读 · 0 评论 -
linux系统编程手册 I/O复用
水平触发和边缘触发水平触发(level-triggered,也被称为条件触发)LT: 只要满足条件,就触发一个事件(只要有数据没有被获取,内核就不断通知你)边缘触发(edge-triggered)ET: 每当状态变化时,触发一个事件。“举个读socket的例子,假定经过长时间的沉默后,现在来了100个字节,这时无论边缘触发和条件触发都会产生一个read ready notific原创 2016-07-15 11:31:08 · 701 阅读 · 0 评论 -
Linux系统编程手册 文件I/O缓冲
文件I/O内核缓冲read、write系统调用在操作磁盘文件时不会直接发起磁盘访问,而是仅仅在用户空间缓冲区与内核缓冲区之间复制数据。例如:如下调用将3个字节的数据从用户空间内存传递到内核空间的缓冲区中:write(fd, "abc", 3);write随即返回。在后续的某个时刻,内核会将其缓冲区的数据写入磁盘。如果在此期间,另一个进程试图读取该文件的这几个字节,那么内核将自动从缓原创 2016-07-14 10:48:25 · 799 阅读 · 0 评论 -
unix编程(九)进程间通信
进程间通信方式# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防原创 2016-05-14 11:02:22 · 607 阅读 · 0 评论 -
linux系统编程手册 文件系统
我们可以通过proc/mounts来查看当前已经挂载的文件系统的列表。int mount(const char* source, const char *target, const char* fstype, unsigned long mountflags, const void *data);source:指定设备所包含的文件系统target:挂载目录fstype:标识原创 2016-07-13 14:42:31 · 1024 阅读 · 0 评论 -
linux系统编程手册 定时器和休眠
一、间隔定时器1.setitimersettitimer创建一个间隔式定时器,这种定时器会在未来某个时间到期,并于此后(可选择地)每隔一段时间到期一次int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);参数 which:1. ITIMER_REAL 创原创 2016-07-13 16:43:46 · 1252 阅读 · 0 评论 -
unix编程(三)进程环境
main函数 当内核执行c程序时,使用一个exec函数,在调用main函数之前先调用了一个特殊的启动例程。这个例程为程序的起始地址。启动例程从内核中取得命令行参数和环境变量值。启动例程调用了main函数,然后退出。启动例程的代码一般用汇编,但是用c代码表示的话就是如下意思:代码可以理解为:exit(main(argc,argc));退出函数:exit_Exit_原创 2016-04-23 09:28:25 · 556 阅读 · 0 评论 -
unix编程(六)线程
判断线程相同pthread_equal(pthread_t tid1, pthread_t tid2);获取自己线程idpthread_t pthread_self(void)线程创建int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*原创 2016-05-07 16:39:58 · 631 阅读 · 0 评论 -
unix编程(七)线程控制
线程属性int pthread_attr_init 初始化int pthread_attr_destory 销毁可以设置4个属性 1.detachstate 线程分离状态属性2.gurardsize 线程栈末尾的警戒缓冲区3.stackaddr 线程栈最低地址4.stacksize 线程栈大小同步属性在进程共享内存数据的时候,可以设置互斥用于多进程同步原创 2016-05-09 18:55:30 · 456 阅读 · 0 评论 -
unix编程(八)高级I/O
非阻塞I/O对于一个给定的描述符,有两种方法为其指定非阻塞I/O方法:1.如果调用open方法获取描述符,可以指定O_NONBLOCK2.已经打开可以调用fcntl F_SETFL来改变文件状态标志,变成非阻塞。文件记录锁记录锁的功能,当一个进程在读取或者修改文件的某个部分,可以阻止其他进程修改同一文件区使用fcntl函数 cmd是F_GETLK获取锁状态 F_SE原创 2016-05-11 14:49:40 · 407 阅读 · 0 评论 -
unix编程(二)文件和目录
stat函数 lstat函数这两个函数都是统计文件信息,区别是当文件时符号链接的时候stat统计的是符号链接的文件,而lstat统计的是符号链接本身。统计文件得到的数据类型是stat结构体,其中有一个mode_t是文件类型,我们可以通过宏比如:S_ISREG()代表普通文件 S_ISDIR():目录文件等文件访问权限在上一章create函数最后有一个mode参数,可以指定文原创 2016-04-21 18:35:24 · 594 阅读 · 0 评论 -
unix编程(五)信号
信号,用于通知进程发生了什么。函数signal处理信号的函数,可以选择SIG_DEF,默认 SIG_IGN忽略此信号子进程终止如果子进程终止,父进程不处理会导致子进程关闭的信号SIGCLD成为一个僵尸进程。但是如果选择SIG_IGN忽略这个信号就不会。kill函数只是给进程发送信号而已,不要从字面意思以为是kill进程raise函数给原创 2016-04-29 16:28:33 · 568 阅读 · 0 评论 -
unix编程(一)文件I/O
文件描述符0,1,2对应STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO三个标准输入,输出,出错open函数#include int open(const char* path, int oflag, ...)'path就是文件名字oflag参数首先必须5项选1:O_RDONLY只读 O_RDONLY只写 O_RDWR读写 O_原创 2016-04-20 17:42:00 · 639 阅读 · 0 评论