wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了什么是Windows相当于sys/select.h和termios.h中定义的功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个在linux中的应用程序,它被成功编译。 我想在Windows中运行相同的程序。 但编译会产生与头文件相关的以下错误。 >找不到sys / SELEct.h >找不到termios.h 如何解决这个问题? Windows API在结构上和风格上与Unix所提供的任何风格的系统调用和库例程的混合都非常不同。 termio.h中 Windows使用与任何* nix系统非常不同的型号执行终端I@H_262_5@
我有一个在linux中的应用程序,它被成功编译。
我想在Windows中运行相同的程序。

但编译会产生与头文件相关的以下错误

>找不到sys / SELEct.h
>找不到termios.h

如何解决这个问题?

Windows API在结构上和风格上与Unix所提供的任何风格的系统调用和库例程的混合都非常不同。

termio.h中

Windows使用与任何* nix系统非常不同的型号执行终端I / O。因此,真的没有直接相当于termio.h标题及其朋友。

您想在MSDN上阅读Windows Communications Resources

有些事要了解更多关于包括

> DCB结构
> COMMTIMEOUTS结构
> BuildCommDCB()
> SetCommState()
> …还有更多…

一般来说,您会发现,您需要直接处理Windows API,因为Stdio会在进行设备I / O时增加混乱。

SELEct.h

没有直接等同于Unix SELEct(2)系统调用

在Windows中,许多内核对象可以处于信令状态或非信号状态,并且可以使用发送对象的动作来释放调用WaitForMultipleObjects()的线程。当数据可用时,有些但不是全部的HANDLE对象被发出信号。具体来说,我知道WinSock的HANDLE有这样的功能,但是我不了解Comm API。我知道HANDLE到一个开放的文件没有。

如果您需要等待正在处理窗口消息的线程中的事件,那么您应该使用MsgWaitForMultipleObjects(),因为它会在线程被阻止时正确传递消息。

请阅读MSDN文章Using Synchronization上的Windows同步原语。

然而,Windows内置了几种异步I / O,可以通过改变设计来替代SELEct()的需要。两者都将需要广泛使用不能与C stdio库结合使用的功能

@H_832_16@mSDN有几篇关于I / O技术的文章,以及许多例子:

> I/O Concepts
> Synchronous and Asynchronous I/O
> Synchronization and Overlapped Input and Output
> CreateFile()(特别是备注部分)

请注意,关于Windows如何工作的大部分信息都分散在概述文章和API函数和结构的参资料的备注部分中。这可以给人的印象是,一读就没有完全记录。

移植Cygwin

另一种方法是使用Cygwin做端口。它通过Windows API提供大部分POSIX层。但是,您将得到一个依赖于Cygwin DLL的应用程序,该应用程序是GPL,除非您从其购买商业使用许可证。使用Cygwin可以很方便地获得一个适用于没有Unix体验的Windows用户的应用程序,因为有关两个系统的设置和使用方式的许多其他假设有所不同。

Cygwin已经做了相当大的努力来构建一个在Windows上运行的SELEct()的实现,给出了不同的打开文件描述符的混合。这个努力是described in the User’s Guide

请注意,如果在Cygwin环境中完成,则只会记录和支持Cygwin的构建。通常仅将Cygwin的bin放在Windows PATH上并通过命令提示符工作是不够的。您真的需要启动Cygwin的bash构建并从中编译,以便所有内容都使用相同的Cygwin风格的安装点和模拟的Unix文件结构。

将Cygwin头文件与第三方工具头文件混合是一个确定的疯狂之路。

编辑:我重新排列了一些,并添加了一些材料以回应评论

大佬总结

以上是大佬教程为你收集整理的什么是Windows相当于sys/select.h和termios.h中定义的功能全部内容,希望文章能够帮你解决什么是Windows相当于sys/select.h和termios.h中定义的功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。