我有一个.NET 4.5控制台应用程序,我正在使用Mono在CentOS上运行。代码结束于:
Console.ReadLine();
如果我交互式地运行应用程序,那么它会按照我的预期运行,Console.ReadLine() 等待键盘输入,但是,如果我使用 nohup 在后台运行应用程序...
nohup mono Program.exe > Program.log &
然后,Program.log 显示 Console.ReadLine() 引起了奇怪的异常:
System.UnauthorizedAccessException: Access to the path "/home/user/[Unknown]" is denied.
at System.IO.FileStream.ReadData (IntPtr handle, System.Byte[] buf, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.ReadInternal (System.Byte[] dest, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.Read (System.Byte[] array, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.StreamReader.ReadBuffer () [0x00000] in <filename unknown>:0
at System.IO.StreamReader.ReadLine () [0x00000] in <filename unknown>:0
at System.IO.UnexceptionalStreamReader.ReadLine () [0x00000] in <filename unknown>:0
at System.IO.SynchronizedReader.ReadLine () [0x00000] in <filename unknown>:0
at System.Console.ReadLine () [0x00000] in <filename unknown>:0
at Program1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
我当然可以捕获并静默忽略异常,但我很好奇是否有可能检测到我没有控制台,从而改变我的应用程序行为?