摘要: #include "apue.h"#include <sys/types.h>#include <utime.h>int main(){ struct utimbuf tbuf; // both type of tbuf.actime and time() is time_t, // but why can't this assignment happen? tbuf.actime = time(); tbuf.modtime = time(); if(utime("hello.c", &tbuf) < 0) 阅读全文
posted @ 2012-10-20 18:57 beanmoon 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1. Google&Wiki(遇到问题做的第一件事情,也是学习某个东西做功课(homework)最先用到的东西。2. 看书挑剔,只看经典。如何选择经典,可以到网上做做功课,看看评价,综合分析一下。3. 做读书笔记。一是将自己阅读的时候的思考(包括闪念)总结下来,二是将书中的好例子摘抄下来。(这个习惯是一年前才养成的,发现受益极大。)有了google note,笔记可以加上tag,非常便于回顾,加深理解。我觉得,人与人学习的差距不在资质上,而在花在思考的时间和思考的深度上(后两者常常也是相关的)。4. 提到思考,我有一个小习惯。利用走路和吃饭的时候思考,还有睡觉前必然要弄一个问题放在脑子 阅读全文
posted @ 2012-10-20 17:28 beanmoon 阅读(281) 评论(0) 推荐(0) 编辑
摘要: //第一次把apue的课后习题做出来了,以作纪念。 PS:这个程序的运行时间比figure4.22的运行时间多,大概是由于切换当前工作目录引起的吧#include "apue.h"#include <dirent.h>#include <limits.h>//line9-54 is copied from figure2.15#ifdef PATH_MAXstatic int pathmax = PATH_MAX;#elsestatic int pathmax = 0;#endif#define SUSV3 200112Lstatic long po 阅读全文
posted @ 2012-10-20 17:15 beanmoon 阅读(312) 评论(0) 推荐(0) 编辑
摘要: df 命令:通过文件系统中未分配的空间来确定文件系统中已分配空间的大小。例如:如果一个文件系统中有 8192个512-byte 块, 并且4096 个块没有被分配出去,那么已分配的空间就是4096 个512-byte 的块。已分配空间 = 空间总数 - 未分配空间因为基于文件系统总体来计算,所以df 命令是报告文件系统空间使用情况最可靠的命令。du 命令:是面向文件的命令,它计算分配给指定文件或者目录的空间。 du 命令必须跟着目的参数,而且不能隔离文件系统。例 如:运行 “# du /” 命令将计算所有在 / 文件系统下所有文件的空间分配信息。其中包括 / 文件系统所有的文件和安装在 / 下 阅读全文
posted @ 2012-10-20 12:56 beanmoon 阅读(1076) 评论(0) 推荐(0) 编辑
摘要: //程序可以正常运行,但file.nohole始终没有东西写进去,为什么?#include "apue.h"#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(int argc, char *argv[]){ FILE *fp1, *fp2; char chr; int fd, count = 0; if(argc != 3) err_quit("Usage: %s <src> <dest>", argv[0 阅读全文
posted @ 2012-10-20 11:54 beanmoon 阅读(144) 评论(0) 推荐(0) 编辑
摘要: #include <unistd.h>pid_t fork(void);由fork创建的新进程为子进程。fork函数被调用一次,但返回两次,两次返回的唯一区别是子进程的返回值为0,而父进程的返回值则是新子进程的进程ID。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID。fork使子进程得到返回值为0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得父进程的进程ID(进程ID 0总是由内核交换进程使用,所以一个子进程的进程ID不可能是0)子进程是父进程的副本。子进程获得父进程数据空间 阅读全文
posted @ 2012-10-20 11:15 beanmoon 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 1、已知文件流指针,获取对应的文件描述符int fileno(FILE *stream); 主要应用:如果程序先前用fopen打开了一个文件,但是又想对其进行锁定操作, 例如 int fcntl(int fildes, int command, struct flock *flock_structure)(注意:command为F_GETLK, F_SETLK, F_SETLKW中其中一者) 或者 int lockf(int fd, int cmd, off_t len),就得先用fileno得到对应的文件描述符后再进行fcntl/lockf操作。2、已知文件描述符,获取对应的文件流指针 FI 阅读全文
posted @ 2012-10-20 11:15 beanmoon 阅读(1310) 评论(0) 推荐(0) 编辑
摘要: linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题。包括: 1、linux多/单进程与多/单文件对于文件流和描述符在使用时的关联情况及一些需要注意的问题。 2、fork,vfork流缓冲等对文件操作的影响。1、linux文件系统结构首先补充一点基础知识,了解一下linux文件系统。如下图所示: 图1磁盘,分区和文件系统应该明白,上图所示结构是硬盘中文件存放方式的一种逻辑表现形式,与进程无关。对于其中一些术语,见下面的解释。i节点:包含文件/目录的几乎全部-适用于放置在硬盘上的,需要长久保存的信息。例如:文件所有者,文件类型,i节点号(存放在目录块中),主次设备号,.. 阅读全文
posted @ 2012-10-20 11:10 beanmoon 阅读(1211) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示