1

open システム コールを使用して tty ポートを開こうとしています。open システムコールが -1 を返した場合、このポートが別のアプリケーションによって使用されているかどうかはどうすればわかりますか?

同じエラーコードを見つけないでください。

4

2 に答える 2

0

ファイルが既に開いている場合、 を呼び出してopen()もエラーは発生しません。

ただし、linuxlsofコマンドの出力を分析してみることができます。

lsof /dev/ttyS0

指定されたファイル (この場合は /dev/ttyS0) を開いたプロセスに関する情報を返します。

(私はこれを数回テストしたので、よくわかりませんが、ファイルがプロセスによって開かれている場合は0lsofを返し、プロセスが開いていない場合は1を返すようです。これは兆候かもしれませんが、コマンド自体の出力を実際に分析することをお勧めします)

于 2013-03-26T11:21:06.933 に答える
0
#include <errno.h>
#include <stdio.h>
#include <strcing.h>

int main() 
{
    if(open("/dev/ttyS0", O_RDWR))
        printf("errno = %s\n", strerror(errno));

    return errno;
}

エラーコードが何であるかを把握するには、このリンクを参照してください。

于 2013-03-26T11:32:02.077 に答える