随笔分类 -  APUE笔记

摘要:编译 要用gdb调试, 需要在gcc编译时加 g选项 gcc g main.c o main 基本命令 gdb [a.out] 开始调试a.out程序 start 停在main函数第一行语句等待下一个命令 run 执行到下一个断点, 或阻塞语句, 或到程序结束 list/l 列出源代码 next/n 阅读全文
posted @ 2016-09-18 22:45 cfans1993 阅读(167) 评论(0) 推荐(0)
摘要:命令参数 在linux下, shell命令的参数分两种情况: a.参数需要附加信息, 如"wget http://www.abc.com/1.zip o 1.zip" b.参数不需要附加信息, 如"ls l" 有点像英语中的及物动词和不及物动词 getopt getopt前两个参数就是main函数里 阅读全文
posted @ 2016-08-09 16:24 cfans1993 阅读(230) 评论(0) 推荐(0)
摘要:相关函数及类型 注意: 如果要遍历所有参数, 不能用va_arg返回值作为判断依据, 需自己显示或隐示(printf中用fmt里的%作为判断依据)传入一个表示数量的参数 例子 例1.求多个数的和 注:__VA_APRGS__是系统宏,作用是将前面的三个冒号的内容原封不动的复制过来 我们自己定义的第一 阅读全文
posted @ 2016-08-06 19:23 cfans1993 阅读(147) 评论(0) 推荐(0)
摘要:mmap 将文件映射到内存, 对这块内存的修改会自动同步到相应的文件中 例子:用mmap将文件映射到内存, 然后用puts打印出来 c include include include include include int main(int argc, char argv[]){ int fdin; 阅读全文
posted @ 2016-07-24 20:36 cfans1993 阅读(174) 评论(0) 推荐(0)
摘要:select IO多路复用的设置方法与信号的屏蔽有点相似: 信号屏蔽需要先设定一个信号集, 初始化信号集, 添加需要屏蔽的信号, 然后用sigprocmask设置 IO多路转接需要先设定一个文件描述符集, 初始化描述符集, 添加感兴趣的描述符, 然后用select进行轮询检测哪些描述符已经可用 描述 阅读全文
posted @ 2016-07-24 18:32 cfans1993 阅读(176) 评论(0) 推荐(0)
摘要:对比 设置进程/线程屏蔽信号:sigprocmask/pthread_sigmask 等待指定进程/线程结束:waitpid/pthread_join 向指定进程/线程发送信号:kill/pthread_kill 线程特有的等待指定的信号发生:sigwait gcc编译时需加参数:gcc test. 阅读全文
posted @ 2016-07-23 18:21 cfans1993 阅读(328) 评论(0) 推荐(0)
摘要:非阻塞io 1.对比 阻塞io的例子:scanf从终端获取输入时,如果不输入程序就会一直停在那; 对一个已经有写锁的文件请求读时, 会一直空等直到前面的进程释放锁... 非阻塞的例子:读取文件内容, 如果文件当前因加锁无法访问则立即出错返回 2.非阻塞io设置方法 a.调用open函数时, 指定O_ 阅读全文
posted @ 2016-07-10 12:41 cfans1993 阅读(868) 评论(0) 推荐(0)
摘要:pipe(管道) 专用于父子进程通信, 函数原型 int pipe(int fd[2]) fd[0]表示输入, fd[1]表示输出 如果父子进程要双向通信, 可以通过类似信号的功能进行控制, 也可以简单地打开两个pipe 以下例子, 打开两个pipe, 第一个pipe用于父进程向子进程发送信息, 第 阅读全文
posted @ 2016-07-10 12:41 cfans1993 阅读(585) 评论(0) 推荐(0)
摘要:非阻塞io 1.对比 阻塞io的例子:scanf从终端获取输入时,如果不输入程序就会一直停在那; 对一个已经有写锁的文件请求读时, 会一直空等直到前面的进程释放锁... 非阻塞的例子:读取文件内容, 如果文件当前因加锁无法访问则立即出错返回 2.非阻塞io设置方法 a.调用open函数时, 指定O_ 阅读全文
posted @ 2016-07-07 14:55 cfans1993 阅读(160) 评论(0) 推荐(0)
摘要:简介 守护线程在系统启动时运行,在系统终止时退出,没有控制终端,只在后台作为一个服务默默运行 编写规则 1.调用umask()设置文件创建时的权限规则 2.调用fork, 然后使父进程exit 3.调用setsid创建一个新会话 4.将系统根目录设置为当前工作目录 5.关闭不再需要的文件描述符 6. 阅读全文
posted @ 2016-07-05 13:48 cfans1993 阅读(173) 评论(0) 推荐(0)
摘要:信号的分类 1.可靠信号: 此类信号支持排队, 不会丢失, 发送多少次就接收多少次. 此类信号的用途可由用户自定义 2.不可靠信号: 此类信号不支持排队, 可能会丢失, 连续多次发送同一信号只接收一次. 此类信号一般都有明确定义和用途 信号的发送 int kill(pid_t pid, int si 阅读全文
posted @ 2016-07-05 13:41 cfans1993 阅读(161) 评论(0) 推荐(0)
摘要:/etc/passwd passwd文件保存着用户的初始工作信息, 每一行保存一位用户的信息 可以通过getpwuid或getpwnam来获取指定用户的信息 struct passwd \ getpwuid(uid_t uid); 通过指定uid来获取 struct passwd \ getpwna 阅读全文
posted @ 2016-07-01 09:08 cfans1993 阅读(120) 评论(0) 推荐(0)
摘要:基本构成 分区就是把磁盘像比萨饼一样切成大小一样的扇形, 当然分区大小不一样扇形的大小也就不一样 上下一串盘片中,相同半径的磁道所组成的一个圆柱型的环壁,就称为柱面 在柱面组中, 比较重要的两个结构是:i节点集合和数据块集合 i节点和数据块 数据块集合是由大小固定的数据块组成, 在很多系统中数据块的 阅读全文
posted @ 2016-06-29 15:47 cfans1993 阅读(273) 评论(0) 推荐(0)
摘要:创建和删除 int mkdir(const char \ pathname, mode_t mode); int rmdir(const char \ pathname); 另外remove也可以删除文件夹 mode: S_IRUSR,S_IWUSR,S_IXUSR,S_IRGRP,S_IWGRP, 阅读全文
posted @ 2016-06-29 12:37 cfans1993 阅读(178) 评论(0) 推荐(0)
摘要:关于属性的结构 在linux下文件和文件夹都被认为是文件, 所以以下的这个属性对文件和文件夹通用 获取属性的函数有stat/fstat/lstat/fstat c struct stat buf; char pathname="./test.txt"; if(stat(pathname,&buf) 阅读全文
posted @ 2016-06-28 18:19 cfans1993 阅读(606) 评论(0) 推荐(0)
摘要:打印基本类型 以下打印基本的数据类型, 如int, char, float等, 最后两行是以八进制和十六进制打印数字10 windows gcc输出: 设置输出宽度 设置每个整数占10个位置, 默认为右对齐 如果数字的长度比设置的宽度大, 那么会忽略我们设置的输出宽度 windows gcc输出: 阅读全文
posted @ 2016-06-26 16:05 cfans1993 阅读(748) 评论(0) 推荐(1)
摘要:线程与进程关键字对比 创建新流 fork/pthread_create 退出控制流 exit/pthread_exit 获取退出状态 waitpid/pthread_join 在退出时的清理工作 atexit/pthread_cleanup_push 非正常退出 abort/pthread_canc 阅读全文
posted @ 2016-06-22 22:28 cfans1993 阅读(146) 评论(0) 推荐(0)
摘要:三种缓冲 1.全缓冲:在缓冲区写满时输出到指定的输出端. 比如对磁盘上的文件进行读写通常是全缓冲的. 2.行缓冲:在遇到'\n'时输出到指定的输出端. 比如标准输入和标准输出就是行缓冲, 回车后就会进行相应的I/O操作. 3.无缓冲:有什么就输出什么. 比如标准错误输出, 出错时立即显示出来. 设置 阅读全文
posted @ 2016-06-20 22:03 cfans1993 阅读(192) 评论(0) 推荐(0)
摘要:进程创建 普通函数调用完成后,最多返回(return)一次,但fork/vfork会返回二次,一次返回给父进程,一次返回给子进程 父进程的返回值为子进程的进程ID,子进程的返回值为0 1.pid_t fork(void) 父子进程共享代码段,fork之后子进程获得父进程数据空间、堆和栈的副本,然后各 阅读全文
posted @ 2016-06-18 21:15 cfans1993 阅读(165) 评论(0) 推荐(0)
摘要:简介 在linux中,打开的的文件(可输入输出)标识就是一个int值,如下面的三个标准输入输出 STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO这三个是标准输入输出,对应0,1,2 open(文件路径,读写标识,其它不定参数) read(文件标识,缓冲区,要读的字节数 阅读全文
posted @ 2016-06-15 11:03 cfans1993 阅读(245) 评论(0) 推荐(0)