about unix

1.在打开文件是设置O_APPEND标识,使得内核在每次写操作之前,都将进程的当前偏移量设置到该文件的尾端处(多进程下可以正常工作)。

2.数据库系统则需要使用O_SYNC,这样一来,当它从write返回时就知道数据已确实写到了磁盘上了。

3.很多文件系统实现不允许有目录的硬链接。(可能引起循环)

4。ISO C是POSIX的子集,POSIX是SUS的子集,SUS是POSIX的扩展,X/Open系统接口(XSI)是POSIX.1中的接口,描述了POSIX中的可选接口,只有遵循XSI的实现才能称为UNIX系统。
5.当对同一个文件描述符或者文件流进行读写时,应注意当前文件偏移量。

6.由于一个文件描述符对应一个文件表项,而当前文件偏移量是存在文件表项里的。所以,分开打开一个文件,他们俩的当前文件偏移量是不相干的。

7.即使在同一个系统上,一个结构体的二进制存放方式(如:对齐方式)也可能因编译程序选项不同而不同。

8. int fileno(FILE *fp) 流转文件描述符  FILE*fdopen(int fd, const char *type)文件描述符转流

9. int atexit(void (*function)(void));注册终止处理函数。

10.大多数实现所分配的存储空间比所要去的要稍大一些,额外的空间用来记录管理信息--分配块的长度,指向下一个分配块的指针等。

11.进程是资源管理的最小单位,而线程是程序执行的最小单位。

12.Linux中,fork的时候只复制当前线程到子进程。

13.vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度执行。不过子进程调用exec之前,它在父进程的空间中运行。

14.在一个进程终止时,内核逐个检查所有活动进程,以判断它是否是正要终止进程的子进程。如果是,则该进程的父进程更改为init 1。

15.特地用fcntl设置了该执行时关闭标志,否则系统的默认操作是在exec后仍保持这种描述符打开。

16.在exec前后实际用户id和实际组id保持不变,而有效id是否改变则取决于所执行程序文件的设置用户id位和设置组id位是否设置。

17.所有现今的unix系统都支持解释器文件。这种文件是文本文件,其起始行的形式是:  #!pathname[optinal-argument]

18.设置用户ID和设置组ID程序决不应调用system函数。

19.SSH协议和Telnet协议服务都可以远程登录另一台机器,但SSH更安全!

20.对于有标准输入输出的后台运行程序,应对其标准输入输出重定向。否则会收到SIGTTOU和SIGTTIN信号,从而阻塞进程.

21.SIGKILL和SIGSTOP信号不能忽略也不能捕捉。

22.每个线程只有一个errno变量,信号处理函数应避免修改原errno值。

23.int pause(void);pause函数使调用进程挂起直至捕捉到一个信号。

24.sleep()  makes the calling process sleep until seconds seconds have elapsed or a signal arrives which is not ignored.

25.使用sigqueue发送信号可对信号进行一定量的排队。


你可能感兴趣的:(linux操作)