C语言 开放系统调用- Linux



尝试使用打开系统调用打开tty端口。如果打开的系统调用返回-1,我如何知道这个端口是否正在被另一个应用程序使用?

如果文件已经打开,调用open()不会给你一个错误。

但是,您可以尝试分析linux lsof命令的输出:

lsof /dev/ttyS0

它将返回打开给定文件的进程的信息(在本例中为/dev/ttys0)。

(我已经测试了几次,所以我不确定它,但lsof似乎返回0,如果文件被进程打开,返回1,如果没有进程打开它。这可能是一个指示,但是我建议您真正分析命令本身的输出)

#include <errno.h>
#include <stdio.h>
#include <strcing.h>
int main() 
{
    if(open("/dev/ttyS0", O_RDWR))
        printf("errno = %sn", strerror(errno));
    return errno;
}

查看此链接以找出错误代码是什么

最新更新