This is my question,显然是 this is the answer 。原来这是一个缓冲问题(在我的ffmpeg链接的接受答案中的解决方案)而不是标准输入。我发现你可以通过写> stdout到null NUL在命令提示符下,所以我尝试写< NUL在我的论点结束时。没有运气。
我如何传入null或使用像perl代码那样的IO锁做一些事情,这样我可以让我的ffmpeg脚本在15秒左右后不锁定?注意:我必须先退出并检查是否有错误。
答案 0 :(得分:3)
更新:之前的回复是关于如何关闭从Perl生成的进程的stdin,但问题实际上是关于如何在.NET中执行任务。
这个想法是一样的。您想要关闭新进程的标准输入流的句柄。在.NET中,可以使用
完成app.StandardInput.Close()
在致电app.Start()
后立即。
(我想你也想设置app.StartInfo.RedirectStandardInput = true
,但我不是一个.NET程序员而且我不确定那个。)
NUL
是一种Windows约定,就像Unix的/dev/null
一样。但是在Unix > NUL
上会创建一个名为"NUL"
的文件,< NUL
会导致系统调用(即system
,反引号等)失败,除非有文件叫"NUL"
。
也就是说,Perl中有可移植的方式来关闭生成进程的标准输入。例如:
open $fh, "| $command > outputfile 2> errorfile";
close $fh;
将启动$command
并立即关闭$command
的标准输入句柄,就好像从命令行运行命令并立即点击^D
。