Month: March 2013

unix进程与被打开文件的关联

UNIX进程和文件中间通过文件表来关联 v结点代表真正的文件元数据(linux只有i结点,但作用差不多) 每个进程都搞一个文件表可以使得: 对同一个文件,每个文件描述符可以有自己的偏移量和打开状态(如只读、只写),比如 这些知识对正确地并发操作文件会有帮助。 另外,两个文件描述符也可以指向同一个文件表项,比如刚刚fork()出的子进程和父进程会共享同一个文件表项。

为什么终端会被称作tty?

早期的UNIX系统是通过TeleTYpewriter(简称tty)来登录的;所以终端就是tty. 这个习惯被沿袭下来,所以现在仍用tty来称呼各种终端,包括硬终端,shell窗口等。 其中shell窗口终端在UNIX眼里实际上是仿真的字符设备。

在ubuntu上用gdb调试printf源码

ubuntu中默认情况下库函数是不带调试信息的,所以用gdb无法进入到printf()函数里。 解决办法是: 1.安装带有调试信息的libc: sudo apt-get install libc6-dbg 2.下载libc源码     a.选定一个放置源码的目录并进入,如 /home/kent/dev-os/libc6-source     b.执行sudo apt-get source libc6, 会把源码下载到当前目录中。 最后源码目录大概是:/home/kent/dev-os/libc6-source/eglibc-2.15 3.运行gdb时指定libc源码目录:gdb `find /home/kent/dev-os/libc6-source/eglibc-2.15 -type d -printf ‘-d %p ‘`  my_program 4.最后进入printf()函数即可. 我这里看到的第一行代码是 va_list arg;

linux线程被杀死会牵连其他线程吗

问:  linux轻量级线程被杀死会牵连其他线程吗 ? 答案:如果这里的杀死是指kill -9的话,则会杀死整个进程,自然也会终结同一个进程内的所有线程。linux的线程是用轻量级进程(lwp, lightweight process)实现的,同一个进程内的所有轻量级进程有共同的PID和不同的LWP-ID. 即使你只kill -9 某个LWP-ID,会导致整个进程被杀死。 引用 POSIX-compliant multithreaded applications are best handled by kernels that support "thread groups ." In Linux a thread group is basically a set of lightweight processes that implement a multithreaded application and act as a whole with regards to some system calls such as getpid( …

linux线程被杀死会牵连其他线程吗 Read More »