首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串行端口上的错误文件描述符

串行端口上的错误文件描述符
EN

Stack Overflow用户
提问于 2011-10-30 14:59:24
回答 1查看 2.8K关注 0票数 0

我正在实现一个简单的协议,在2个人电脑之间通过串口进行文件传输,我得到了一个奇怪的错误。

在主要部分,我调用一个函数"llopen":

代码语言:javascript
复制
int 
llopen(int port, int type) {

    int     fd = 0;
    char*   PORT;


    PORT = malloc( sizeof(char) * (strlen(COM) + 1) );
    sprintf(PORT,"%s%d",COM,port);

    fd = initialization(PORT); // Open(...): returns a file descriptor!

    switch(type) {
            case SENDER:
                    return connectSender(fd);
                    break;
            case RECEIVER:
                    return connectReceiver(fd);
                    break;
    }

    return fd; // The fd value here is 5

}

之后,我调用一个函数llwrite(int,.)将字符串写入文件描述符,但我得到了一个错误:“坏的文件描述符”在llwrite(int,.)上。如果我再次调用初始化(端口)函数,在此之前,它可以工作,并将N个字节写入文件描述符,但如果不调用,则再次给出“不好的文件描述符”错误。

这里是llwrite(int,.)职能:

代码语言:javascript
复制
int 
llwrite(int fileDescriptor, unsigned char* buffer, unsigned int length) {


    // The fd value here is 5
    return writeBuffer(fileDescriptor,buffer,length);

}

即使在return语句之前,如果我调用,例如,tcflush(.)函数我得到了“坏文件描述符”错误。

有线索吗?提前感谢!

编辑:

问题解决了。

伊隆(.)是错的。我正在返回写入ConnectReceiver(.)/ConnectSender(.)上的字节数。而不是文件描述符

现在它是正确的:

代码语言:javascript
复制
int 
llopen(int port, int type) {

   int     fd = 0;
   char*   PORT;


   PORT = malloc( sizeof(char) * (strlen(COM) + 1) );
   sprintf(PORT,"%s%d",COM,port);

   fd = initialization(PORT); // Open(...): returns a file descriptor!

   switch(type) {
           case SENDER:
                   if( connectSender(fd) > 0 ) return fd;
           case RECEIVER:
                   if( connectReceiver(fd) > 0 ) return fd;
   }

   return -1;

}
EN

回答 1

Stack Overflow用户

发布于 2011-10-30 15:09:18

这里没有足够的信息,但值得一试

代码语言:javascript
复制
return connectSender(fd);
break;

那里的中断是死代码,因为返回停止了函数的执行。也许你不是有意回来的?

如果不是这样的话,尝试使用strace获取更多关于发生了什么的详细信息。如果您不在linux上,其他OSes应该有类似的工具,例如dtrussktrace

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7945629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档