为什么java 输入exit退出可以让PowerShell强制退出

为什么Exit可以让PowerShell强制退出_百度知道
为什么Exit可以让PowerShell强制退出
Done&#39,因为这一次除了控制台。为了让上面的结论更加容易理解:function abc{'Done'}abc当你执行上面的脚本;Function ends&#39。可是当你在PowerShell控制台以交互的方式来运行这个函数;}&#39偶尔有人可能对exit有点误解:function abc{&#39,看不到”Done”;Start&#39,当你运行脚本时,真相果真如此吗;exit 100&#39,你会看的更加真切,写出下面这样的例子,但是这一次连同PowerShell控制台也跟着一起倒闭了?因为”Exit”是从调用者的作用域来终止;这一次,而是终止了整个脚本;abc&#39,然后终止,脚本被终止,为什么,此次终止发生在全局作用域;Start&#39,你既看不到”Done”也看不到”Function ends”,你只会看到“Start”输出,我们把前面的示例脚本稍微改动下;Function starts&#39,变量$LASTEXITCODE中包含了一个值100,没有更高的作用域了,函数虽然再次终止?当你把上面的abc函数在交互式的PowerShell中的控制台中运行时,你的PowerShell控制台也会被终止,但是PowerShell还是可以继续运行,”exit”真的没有终止abc这个函数;exit 100&#39,abc函数被调用
其他类似问题
为您推荐:
powershell的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4502)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:' Windows PowerShell基本语法及常用命令',
blogAbstract:'
PowerShell常用命令:
1.Get-Command : 得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 包括Cmdlet、Alias、Function。
2.Get-Process : 获取所有进程3.Get-Help& : 显示有关 Windows PowerShell 命令和概念的信息
4.Get-History& : 获取在当前会话中输入的命令的列表
5.Get-Job&:& 获取在当前会话中运行的 Windows PowerShell 后台作业
6.Get-FormatData&: 获取当前会话中的格式数据',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:2,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}了解Powershell中的Exit函数
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了了解Powershell中的Exit函数,对exit的函数使用技巧上做了小结,并用实例说明了exit函数的使用,需要的朋友可以参考下
Powershell支持“EXIT”关键字,它的范围是基于作用域的,它可能比你想象的工作方式要不同。
让我们来测试下这个函数:
代码如下:function test
当你保存并调用脚本,你将得到:
PS& C:\Users\Tobias\Documents\PowerShell\test12343.ps1
这时”exit”过早的结束了这个函数。可是当你没有保存当前脚本或当你调用的是一个交互函数,你整个Powershell宿主将关闭。
“Exit”结束当前调用的脚本,不仅仅是函数。倘若你把它像下面那样保存到脚本,你也许会有意外的发现:
function test
现在结果像这样:
PS&& C:\Users\Tobias\Documents\PowerShell\test12343.ps1
请注意,代码“Stop”没有执行。“Exit”结束了自身函数并且停止了作用域后续的执行。如果调用交互函数为什么不会关闭Powershell呢?(这是因为,你调用的作用域宿主是它自己)。
所以该怎么使用“exit”?你可以在脚本工作时设置一个错误等级数。这个等级数能从调用中获得。所以如果你创建一个Powershell计划任务,或通过Powershell.exe执行批处理文件,这时你在“Exit”后指定的不同数字将变成你脚本外的退出代码就如同你批处理中的%ERRORLEVEL%一样。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具&& & &这几天在做一个把大量Infopath生成的XML数据,进行处理的程序,我用了MDI子窗体,每个窗体包含了各自的功能,如,遍历目录及其子目录检查文件类型并自动生成Sql语句并入库、对Infopath数据的自动检查、对数据中的某些域的替换及更改处理、对数据文件的合并、拆分、剔除记录、统计数据、 对数据自动导入数据库。。。等等。&&&&&& 当我打开一个子窗体,进行某项操作时,如果字窗体中有循环操作时。如果运行中我关闭子窗体,发现窗体虽然关闭了,但子窗体中的循环程序却没有退出,一直在 执行,并占用着系统资源,直到循环结束,才真正的释放资源。尽管我在字窗体的Closed事件中写了如下代码:&&&&&&&&&&&& private void frmFileDisposal_Closed(object sender, System.EventArgs e)&&&&& {&&&&&&&&& this.Dispose();&&&&&&&&& this.Close();&&&&& }&& 后来从查MSDN和从网上查资料才得知,Dispose()方法,虽然能释放当前窗体的资源,却不能强制结束循环,&& 要想强制突出当前程序要用:System.Environment.Exit(int exitcode)方法;该方法:终止当前进程并为基础操作系统提供指定的退出代码。如下则问题解决:&&& private void frmFileDisposal_Closed(object sender, System.EventArgs e)&&&&& {&&&&&&&&&&&&&&&&&& System.Environment.Exit(System.Environment.ExitCode);&&&&&&&&&&&& this.Dispose();&&&&&&&&& this.Close();&&&&& }或者把它放到事件里:&&& while (MessageBox.Show("退出当前窗体?", "", MessageBoxButtons.YesNo) ==&&& DialogResult.No)&&&& {&&&&&&& for(int j=1; j&=i; j++)&&&&&&& {&&&&&&&&&& listBox1.Items.Add(j);&&&&&&& }&&&&&&&&&& }&&& System.Environment.Exit(System.Environment.ExitCode);&&&还有一种方法:&& System.Threading.Thread.CurrentThread.Abort();&&&&&&&&&&&&&&&&&&&&&&&&&& 或者&&&&&&&&&& Process.GetCurrentProcess().Kill()&&&&&&&&&&&&&&&&&&&&&&&&&&&& 或者&&&&&&&& Application.ExitThread();&&&&&&&&&&&&&&&&&&&&&&&&&&& 或者&&&&&&&& Application.ExitThread()不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。可能还会引发某些问题,我感觉最好方法的就是,在子窗体的Closing事件中,写循环退出条件,这样就可以避免某些未知的错误,而且可以只关闭子窗体,并释放子窗体占用的资源Application.Exit(); 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口Application.Exit 是一种强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执行返回给系统。在 Windows(Win32 或 .NET)中关闭应用程序的正确方式是关闭它的主应用程序窗口(例如 Form.Close)。主消息泵结束后依然存在的任何窗口都需要手动关闭。在应用程序退出之前通过调用 Form.Close 或 Form.Dispose 来关闭窗口是清除窗口的良好做法,但这需要您有意识地去做。我们需要记住,.NET Framework 的 OnClosing() 是 Win32 的托管版本的 WM_CLOSE,而非 WM_DESTROY。另外,如果您使用 form.Close(),通过处理 OnClosing 或 OnClosed 事件,就可以让您的应用程序清理内容、关闭文件等。如果您通过 Application.Exit 强行退出应用程序,就无法调用这些事件。用System.Environment.Exit(0);成功使程序退出。好像还有其他方法,如用系统消息来通知、控制循环结束,呵呵,显它麻烦,这里就不唠叨了,如果那位高手还有更好的解决方法,还望不吝指点一二!!!提前谢谢了 ^_^
阅读(...) 评论()
友情链接:c#如何强制退出(&17:21:03)
今天在写程序的时候,发现了一个问题,每次程序执行了catch之后并不会跳出,而是继续向下执行,然后报错退出。并非从catch推出。
解决方法:
方法一:Application.Exit()&&
开始的时候,使用的是这种方法,但是发现了一个问题,它还是不能跳出,还是继续向下执行,后来才发现,因为Application.Exit()只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵。
(总是报错。不包含EXIT的定义,怀疑和我的vs2005有关系)
方法二:System.Environment.Exit(0);
而System.Environment.Exit(0);&&&万试万灵,无论在主线程和其它线程,只要执行了这句,都可以把程序结束干净。
(结束了,可惜出现的bank页面。并不是我要的)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.强制退出WinForm程序之Application.Exit和Environment.Eixt
MSDN和从网上查资料才得知,Dispose()方法,虽然能释放当前窗体的资源,却不能强制结束循环,
要想强制突出当前程序要用:System.Environment.Exit(int
exitcode)方法;该方法:终止当前进程并为基础操作系统提供指定的退出代码。
如下则问题解决:
&& private void
frmFileDisposal_Closed(object sender, System.EventArgs e)
System.Environment.Exit(System.Environment.ExitCode);&&
this.Dispose();
this.Close();
或者把它放到事件里:
(MessageBox.Show("退出当前窗体?", "", MessageBoxButtons.YesNo)
==&& DialogResult.No)
for(int j=1; j&=i; j++)
listBox1.Items.Add(j);
System.Environment.Exit(System.Environment.ExitCode);&&
2. 还有一种方法:
System.Threading.Thread.CurrentThread.Abort();
&&&&&&&&&&&&&&&&&&&&&&&&&
或者&&&&&&&&&
Process.GetCurrentProcess().Kill()
&&&&&&&&&&&&&&&&&&&&&&&&&&
或者&&&&&&&
Application.ExitThread();
&&&&&&&&&&&&&&&&&&&&&&&&&&
或者&&&&&&&
Application.ExitThread()
不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。可能还会引发某些问题,
我感觉最好方法的就是,在子窗体的Closing事件中,写循环退出条件,这样就可以避免某些未知的错误,而且可以只关闭子窗体,并释放子窗体占用的资源.
3. Application.Exit();
方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口
Application.Exit
是一种强行退出方式,就像 Win32 的
PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执行返回给系统。
在 Windows(Win32 或
.NET)中关闭应用程序的正确方式是关闭它的主应用程序窗口(例如
Form.Close)。主消息泵结束后依然存在的任何窗口都需要手动关闭。在应用程序退出之前通过调用 Form.Close 或
Form.Dispose 来关闭窗口是清除窗口的良好做法,但这需要您有意识地去做。我们需要记住,.NET Framework 的
OnClosing() 是 Win32 的托管版本的 WM_CLOSE,而非 WM_DESTROY。
另外,如果您使用 form.Close(),通过处理
OnClosing 或 OnClosed 事件,就可以让您的应用程序清理内容、关闭文件等。如果您通过 Application.Exit
强行退出应用程序,就无法调用这些事件。
到目前为止没发现有好用的,先把资料保存下来慢慢研究
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 linux 进程退出 exit 的文章

 

随机推荐