将Cygwin管道化到Python程序中

将Cygwin管道化到Python程序中,python,cygwin,pipe,subprocess,Python,Cygwin,Pipe,Subprocess,作为一个新手,我对整个管道系统和Python都不熟悉,我最近在尝试使用Python的子流程moude将Cygwin的stdin和stdout管道化到Python程序中时遇到了一个问题。 例如,我采用了一个简单的程序: cygwin = subprocess.Popen('PathToCygwin',shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE) cygwin.stdin.write('ssh') 在此之后,我得到了以下错误:

作为一个新手,我对整个管道系统和Python都不熟悉,我最近在尝试使用Python的子流程moude将Cygwin的stdin和stdout管道化到Python程序中时遇到了一个问题。 例如,我采用了一个简单的程序:

cygwin = subprocess.Popen('PathToCygwin',shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
cygwin.stdin.write('ssh')
在此之后,我得到了以下错误:

cygwin.stdin.write('ssh')
IOError: [Errno 22] Invalid argument

我做错了什么?

好吧,你的文字代码不起作用。您正在传递一个值为“PathToCygwin”的字符串,但这不会起任何作用。我假设你传递的字符串比这更好,但你没有告诉我们什么

我想你的PathToCygwin可能是问题所在。如果你没有找到正确的路径,它将不起作用

这是我的测试代码。我在Cygwin版本的Python下运行了这个程序,所以我使用了Cygwin样式的路径:而不是
r“C:\Cygwin\bin\bash.exe”
我使用了
/cygdrive/C
路径:

>>> cpath = "/cygdrive/c/cygwin/bin/bash.exe"
>>> cygwin = subprocess.Popen(cpath,shell=False,stdin=subprocess.PIPE,stdout=su
bprocess.PIPE)
>>> cygwin.stdin.write("ssh")
>>>
同样,我在Cygwin编译的Python版本中运行了这个。如果您使用的是Windows本机版Python,则可能需要使用
C:
路径

如果您仍然有问题,请您确切地告诉我们您使用的是哪一版本的Python,并向我们展示您使用的实际路径代码,好吗