2

システム:Ubuntu 12.04
コンパイラ:gcc(バージョン:4.6.3)

私の考えは、シリアルポートを介してデータを交換するクライアントサーバーアプリケーションを作成することです。

しかし、私の問題は、以下のコードスニペットを実行するときに、2つの独立したプロセスを開始すると、openが同じファイル記述子を返すことです。

最初のプロセスは「/dev/ttyS0」を開きます。
2番目のプロセスは「dev/ttyS1」を開きます。

    ....
    serialPortDescriptor = open(portName,
                                O_RDWR | O_NOCTTY | O_NDELAY | O_EXCL);
if (serialPortDescriptor == INVALID_SERIALPORT_DESCRIPTOR) {
    return SERIALPORT_UNKNOWN_ERROR;
}
    .....

openが2つの異なるプロセス/プログラムの異なるデバイス/パス名(それぞれ「dev/ttyS1」と「dev/ttyS0」)に対して同じファイル記述子値を返すのは正常ですか?

4

1 に答える 1

3

それは完全に正常です。ファイル記述子は、カーネル内のプロセスごとの開いているファイルテーブルへの単なるオフセットです。

于 2012-12-07T20:02:47.870 に答える