0

Python ファイル名は orientationplot.py です。このファイルは、Google で簡単に見つけることができます。この python スクリプトは、android で WindowOrientationListener の動作を視覚化するために使用されます。しかし、それはLinux用に書かれています。ウィンドウズで使いたい。エラーがあります。このファイルを Windows で実行するにはどうすればよいですか。

Traceback (most recent call last):
  File "G:\perftool\orientationplot\orientationplot.py", line 27, in <module>
    import fcntl
ImportError: No module named fcntl
fcntl.fcntl(stream, fcntl.F_SETFL, os.O_NONBLOCK)
4

1 に答える 1

1

このプログラムを Windows 用に単純に書き直すことは絶対にできません。モジュールを多用しfcntlます。ご存じないかもしれませんがfcntl、ファイル記述子を操作する Linux のシステム コールです。

fcntl.fcntl(stream, fcntl.F_SETFL, os.O_NONBLOCK)

nosklo は、この StackOverflow の回答に次のように書いています。

fcntlon windowsの代替はwin32api呼び出しです。使い方が全然違います。それはあなたがただひっくり返すことができるスイッチではありません。

ただし、いくつかの調査により、これはおそらく可能であることを指摘したいと思います。Windows でストリームのファイル記述子フラグを設定する方法 (つまり、open() システム コールで指定されたストリームのパーミッションとその他のフラグ) と設定方法を理解する必要がありますos.O_NONBLOCKWinsockの Web サイトでさらに詳しい情報を見つけました。

Unix の fcntl() 呼び出しは、Winsock では直接同等のものはありません。必要に応じて、Winsock の ioctlsocket() 呼び出しにも同様の機能が存在します。たとえば、Unix の fcntl() を使用してソケットの O_NONBLOCK フラグを設定するのと同じことは、Winsock の ioctlsocket() で FIONBIO フラグを設定することです。

于 2013-01-10T13:07:37.587 に答える