C Open在不同进程中返回相同的文件描述符
系统:Ubuntu 12.04C Open在不同进程中返回相同的文件描述符,c,linux,file-descriptor,tty,C,Linux,File Descriptor,Tty,系统:Ubuntu 12.04 编译器:gcc(版本:4.6.3) 我的想法是编写一个客户机-服务器应用程序,通过串行端口交换数据 但我的问题是,当我执行下面的代码段时,open返回相同的文件描述符 如果我启动两个独立的进程: 第一个进程打开“/dev/ttyS0”。 第二个进程打开“dev/ttyS1” open在两个不同的进程/程序中为不同的设备/路径名(分别为“dev/ttyS1”和“dev/ttyS0”)返回相同的文件描述符值是否正常?这完全正常。只是内核中每个进程打开文件表的偏移量。每
编译器:gcc(版本:4.6.3) 我的想法是编写一个客户机-服务器应用程序,通过串行端口交换数据 但我的问题是,当我执行下面的代码段时,open返回相同的文件描述符 如果我启动两个独立的进程: 第一个进程打开“/dev/ttyS0”。
第二个进程打开“dev/ttyS1”
open在两个不同的进程/程序中为不同的设备/路径名(分别为“dev/ttyS1”和“dev/ttyS0”)返回相同的文件描述符值是否正常?这完全正常。只是内核中每个进程打开文件表的偏移量。每个进程都有自己的标准输入,它始终是文件描述符0。与标准输出和标准误差(1和2)类似。任何数量的进程都可以打开文件描述符3;通常,它们将对许多不同的文件或设备开放,有些仅用于输入,有些仅用于输出,有些同时用于两者。在某些操作系统中,可能是这样,在另一些操作系统中可能是这样,但它不是唯一的ID,只是对流程唯一。我看到这里具体是linux,但fd是std库,因此在不同的操作系统中可能实现不同,而不是真正的库,更像是内核系统调用接口。
....
serialPortDescriptor = open(portName,
O_RDWR | O_NOCTTY | O_NDELAY | O_EXCL);
if (serialPortDescriptor == INVALID_SERIALPORT_DESCRIPTOR) {
return SERIALPORT_UNKNOWN_ERROR;
}
.....