当我使用Terminal / Bash调用Image Magick命令(例如“convert”)时,我的命令成功。如果我使用C#脚本中的系统进程使用相同的命令“convert”将参数传递给Bash控制台,它将返回错误命令,而不是通过StandardRedirectError找到。
为什么在使用系统进程时找不到命令? e.g
ProcessStartInfo startInfo = new ProcessStartInfo("/bin/bash");
startInfo.WorkingDirectory = installFolder;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
if (process != null) {
process.StandardInput.WriteLine ("convert"); //error: command not found
process.StandardInput.WriteLine ("echo \"hello world\""); //output: "hello world"
由于
答案 0 :(得分:1)
请发布更完整的代码示例,您需要告诉Process运行哪些可执行文件并传入参数。 See the MSDN docs and Sample
Soimething like
class RatingForm(forms.Form):
name = forms.CharField(
label='',
widget=forms.TextInput(attrs={'class': 'form-control'}),
)
rating = forms.ChoiceField(
label='',
widget=forms.RadioSelect(attrs={'class': ''}),
choices=RATING_CHOICES,
)
答案 1 :(得分:0)
由@MurrayFoxcroft正确指导,这是由于非登录shell模式意味着我的.bash_profile未加载。这样做:
process.StandardInput.WriteLine (". ~/.bash_profile");
process.StandardInput.WriteLine ("convert");