也就是说,轻量级进程没有独立的文件系统相关的信息,进程中任何一个线程改变当前目录、根目录等信息都将直接影响到其他线程。而__pthread_main_thread所在的链则将进程中所有用户线程串在了一起,电脑资料《linux下进程与线程Linux》()。
也就是说,轻量级进程没有独立的文件系统相关的信息,进程中任何一个线程改变当前目录、根目录等信息都将直接影响到其他线程。而__pthread_main_thread所在的链则将进程中所有用户线程串在了一起,电脑资料《linux下进程与线程Linux》()。
所以管道在用户程序看起来就像一个打开的文件,通过read(filedes[0]);或者write(filedes[1]);向这个文件读写数据其实是在读写内核缓冲区。请读者思考,如果只开一个管道,但是父进程不关闭读端,子进程也不关闭写端,双方都有读端和写端,为什么不能实现双向通信?
当然了,对应到我们的计算机中,操作系统就相当于我们的管理者,而硬件驱动就相当于我们的执行者,而硬件(软件)就是我们被管理者。然后我们的操作系统对进程的管理就会转换成对特定数据结构的管理。所以,在这里我们也引出了进程真正的概念:进程=内核关于进程的相关数据结构+当前进程的代码和数据。操作系统里每打开一个程序都会创建一个进程ID,即PID。
在Linux中要使用exec函数族。(不过exec类函数中有的还允许继承环境变量之类的信息。那就是结合fork与exec的使用。熟悉DOS和WINDOWS系统调用的朋友一定知道DOS/WINDOWS也有exec类函数,其使用方法是类似的,但DOS/WINDOWS还有spawn类函数,因为DOS是单任务的系统,它只能将父进程驻留在机器内再执行子进程,这就是spawn类的函数。