擅长:python、mysql、java
<p>我不明白您的问题“将参数传递给子进程可执行文件”的标题与其他问题有什么关系,特别是“我希望tcsh不要读取我的~/.cshrc”</p>
<p>但是-我知道你没有正确使用你的Popen。</p>
<p>您的命令应该是列表或字符串,而不是1个字符串的列表。</p>
<p>所以<code>cmd = ["echo hi"]</code>应该是<code>cmd = "echo hi"</code>或者<code>cmd = ["echo", "hi"]</code></p>
<p>然后,根据它是字符串还是列表,您需要将shell值设置为<code>True</code>或<code>False</code>。<code>True</code>如果是字符串,<code>False</code>如果是列表。</p>
<hr/>
<p>“传递”参数是函数的一个术语,使用Popen或subprocess module与函数不同,虽然它们是函数,但实际上是用它们运行命令,而不是传统意义上的传递参数,因此,如果要使用<code>'-f'</code>运行进程,只需将<code>'-f'</code>添加到要使用其运行命令的字符串或列表中。</p>
<hr/>
<p>要把所有的事情放在一起,你应该做如下的事情:</p>
<pre><code>proc = subprocess.Popen('/bin/tcsh -f -c "echo hi"', shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
</code></pre>