UNIX系统编程小结(一)(3)

基础,原理,这都是需要掌握的。之前我有些激进了,想尽快去读linux内核,现在看来,还有很长的路要走。

六.我的一些笔记(有些摘自apue)

1.off_t 是一个long int

2.read,write这两个system call在使用时会改变当前的offset

3.read,write starts at the file's current offset.

4. size_t 是为了方便系统之间的移植而定义的,是unsigned int. ssize_t是signed size_t

5.the lseek fnction modifies only the current file offset in the file table entry . No I/O takes place.

6.Any operation that requires more that one function call cannot be atomic,as there is always the possibility that the kernel can temporarily suspend the process between the two function calls.

7.creat(filename,FILE_MODE).如果filename文件已经存在,将会删除filename的所有内容

  8.delayed write:When we write data to a file ,the data is normally copied by the kernel into one of its buffers and queued for writing to disk at some later time.

   9.cat不直接接受标准输入。 比如 more file1 | cat file2 的结果只会输出file2,而这样more file1 | cat - file2就会输出file1和file2了。注:-可以用/dev/fd/0替代,表示连结标准输入.

   10.用read,write系统调用时,用户没有对输入输出做缓存,但是内核是会对所有输入输出做缓存的。可以这样说,在这个进程的user time没有进行缓存,但是system time在进行缓存

   11.O_SYNC会一直起作用.而fsync和fdatasync是一次性的操作。

   12.每次open系统调用后,都会生成一个新的file table entry.

13.注意write,read,printf等函数的'\0'问题

   14.2>&1 是将2重定向到1,也就是将stderr重定向到stdout,就是让stderr也指向stdout。再抽象一些,2>&1,就是将文件描述符2重定向到文件描述符1所指向的文件,使得二者指向同一个文件。

   参考资料:apue(unix环境高级编程)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5dca6e4955b24164b69c938efaec54ac.html