2013-03-26 181 views
0

尝试使用开放系统调用来打开tty端口。您是否知道这个端口是否被另一个应用程序使用,以防开放系统调用返回-1?开放系统调用 - Linux

找不到相同的错误代码。

+1

要查找实际的错误代码,您应该检查'errno',如果open()返回'-1'。这应该会让你对错误有更多的了解......虽然我不认为它能够告诉你它是否已被使用。 – jszakmeister 2013-03-26 09:08:49

+0

您无法确定某个文件是否由标准C中的其他应用程序打开。您可以使用系统实用程序(lsof)或特定于您的案例的解决方案(如果所有有问题的进程都使用它们,则为咨询文件锁定)。 – 2013-03-26 11:38:29

回答

0

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

Howerver,你可以尝试分析了Linux lsof命令的输出:

lsof /dev/ttyS0

它将返回有关打开指定文件的进程的信息(在这种情况下是:/ dev/ttyS0来) 。

(我这个测试了几次,所以我不知道这件事,但lsof似乎返回如果该文件是由一个进程打开并返回如果没有进程已经打开它这可能是一个迹象,不过我建议你真的分析命令本身)

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; 
} 

,以找出错误代码是什么看到这个link的输出。