每个进程都有自己的stdin,stdout和stderr,还是只分享1 stdin,1 stdout和1 stderr?我的意思是当然每台计算机通常有1个键盘和1个终端,但是是进程的输入和输入。输出流相互分离?
答案 0 :(得分:11)
stdout
,stdin
和stderr
只是操作环境与其输入和输出交互的过程抽象。尽管只有一个键盘(在大多数情况下,无论如何),操作系统知道如何确定哪个进程获得当前输入,并将键击传递给该进程的stdin
。类似地,尽管只有一个屏幕,但它可以被分成几个窗口。最后,许多进程的输入和输出都绑定到文件流。操作系统可以让您将多个进程绑定到单个输入或单个输出文件,但即使在这种情况下,表示进程内的stdin
和stdout
流的对象也将是独立的:它们将引用操作系统中的同一对象,操作系统将管理用户之间共享该对象。