Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Open在不同进程中返回相同的文件描述符_C_Linux_File Descriptor_Tty - Fatal编程技术网

C Open在不同进程中返回相同的文件描述符

C 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”)返回相同的文件描述符值是否正常?这完全正常。只是内核中每个进程打开文件表的偏移量。每

系统:Ubuntu 12.04
编译器: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;
}
    .....