⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从同一个地方跑下去...&nbsp;两者间唯一不同,&nbsp;就是&nbsp;fork()&nbsp;的&nbsp;return&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value...&nbsp;所以你可以看到上面的这段&nbsp;example,&nbsp;是跟据&nbsp;return&nbsp;value&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;来判断这是个&nbsp;child&nbsp;process&nbsp;或是&nbsp;parent&nbsp;process..&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>><I>&nbsp;--------------------------------------------------------------------------&nbsp;&lt;&nbsp;</I><BR>&nbsp;<BR>发信人:&nbsp;<A HREF="mailto:LFalcon.bbs@cis.nctu.edu.tw">LFalcon.bbs@cis.nctu.edu.tw</A>&nbsp;(笨鸟),&nbsp;看板:&nbsp;programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;Multi-Client&nbsp;communication!&nbsp;<BR>发信站:&nbsp;交大资科_BBS&nbsp;(Thu&nbsp;May&nbsp;16&nbsp;21:51:34&nbsp;1996)&nbsp;<BR>转信站:&nbsp;maple!news.ee.nthu!news.cis.nctu!cis_nctu&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;谢谢高手们的指导!如今我已经知道何谓forking了,但是实际在&nbsp;<BR>使用fork()来做concurrent&nbsp;server时(socket-based&nbsp;IPC),发现会有&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;zombie&gt;&nbsp;的产生!说明一下,我写了部份程式如下:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slave_sd=accept(msd,&nbsp;NULL,&nbsp;NULL);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((child=fork())==-1)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;fork&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(-1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(child)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read(slave_sd,&nbsp;buf,&nbsp;BUFSIZ);&nbsp;&nbsp;&nbsp;&nbsp;&lt;-&nbsp;对client做读的动作&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write(slave_sd,&nbsp;buf,&nbsp;sizeof(buf));&nbsp;&lt;-对client做写的动作&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;中途client停止对本&nbsp;server写入&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(slave_sd);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;结果,等client那边停止送讯息给server後,以&nbsp;ps&nbsp;来看,竟产生zombie。&nbsp;<BR>是不是能请先进解释一下,可谓zombie?&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>><I>&nbsp;--------------------------------------------------------------------------&nbsp;&lt;&nbsp;</I><BR>&nbsp;<BR>发信人:&nbsp;<A HREF="mailto:jackie.bbs@cis.nctu.edu.tw">jackie.bbs@cis.nctu.edu.tw</A>&nbsp;(狗脸岁月),&nbsp;看板:&nbsp;programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;Multi-Client&nbsp;communication!&nbsp;<BR>发信站:&nbsp;交大资科_BBS&nbsp;(Thu&nbsp;May&nbsp;16&nbsp;23:02:34&nbsp;1996)&nbsp;<BR>转信站:&nbsp;maple!news.ee.nthu!news.cis.nctu!cis_nctu&nbsp;<BR>&nbsp;<BR>==&gt;&nbsp;在&nbsp;LFalcon@cis_nctu&nbsp;(笨鸟)&nbsp;的文章中提到:&nbsp;<BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢高手们的指导!如今我已经知道何谓forking了,但是实际在&nbsp;</I><BR>><I>&nbsp;使用fork()来做concurrent&nbsp;server时(socket-based&nbsp;IPC),发现会有&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;zombie&gt;&nbsp;的产生!说明一下,我写了部份程式如下:&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slave_sd=accept(msd,&nbsp;NULL,&nbsp;NULL);&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((child=fork())==-1)&nbsp;{&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;fork&quot;);&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(-1);&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(child)&nbsp;{&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read(slave_sd,&nbsp;buf,&nbsp;BUFSIZ);&nbsp;&nbsp;&nbsp;&nbsp;&lt;-&nbsp;对client做读的动作&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write(slave_sd,&nbsp;buf,&nbsp;sizeof(buf));&nbsp;&lt;-对client做写的动作&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;中途client停止对本&nbsp;server写入&nbsp;*/&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(slave_sd);&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结果,等client那边停止送讯息给server後,以&nbsp;ps&nbsp;来看,竟产生zombie。&nbsp;</I><BR>><I>&nbsp;是不是能请先进解释一下,可谓zombie?&nbsp;</I><BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所谓&nbsp;zombie&nbsp;process&nbsp;就是&nbsp;child&nbsp;process&nbsp;比&nbsp;parent&nbsp;process&nbsp;先&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;死掉&quot;,&nbsp;而parent&nbsp;还未替它收□(即wait).&nbsp;所以你用&nbsp;ps&nbsp;会看到&nbsp;child&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process&nbsp;的□体,&nbsp;它本身也会占用一些&nbsp;resource,&nbsp;所以解决的方法是&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以fork()&nbsp;2个以上的&nbsp;child&nbsp;processes来处理要做的事,&nbsp;而把parent&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process结束掉.&nbsp;这样child&nbsp;processes&nbsp;就会被system&nbsp;的&nbsp;init&nbsp;process&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(pid=1)&nbsp;接管,&nbsp;就不会有你说的那些问题了.&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>><I>&nbsp;--------------------------------------------------------------------------&nbsp;&lt;&nbsp;</I><BR>&nbsp;<BR>发信人:&nbsp;<A HREF="mailto:LFalcon.bbs@cis.nctu.edu.tw">LFalcon.bbs@cis.nctu.edu.tw</A>&nbsp;(笨鸟),&nbsp;看板:&nbsp;programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;Multi-Client&nbsp;communication!&nbsp;<BR>发信站:&nbsp;交大资科_BBS&nbsp;(Thu&nbsp;May&nbsp;16&nbsp;23:29:40&nbsp;1996)&nbsp;<BR>转信站:&nbsp;maple!news.ee.nthu!news.cis.nctu!cis_nctu&nbsp;<BR>&nbsp;<BR>==&gt;&nbsp;在&nbsp;jackie@cis_nctu&nbsp;(狗脸岁月)&nbsp;的文章中提到:&nbsp;<BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所谓&nbsp;zombie&nbsp;process&nbsp;就是&nbsp;child&nbsp;process&nbsp;比&nbsp;parent&nbsp;process&nbsp;先&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;死掉&quot;,&nbsp;而parent&nbsp;还未替它收□(即wait).&nbsp;所以你用&nbsp;ps&nbsp;会看到&nbsp;child&nbsp;</I><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^^&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果说在我的parent&nbsp;process中使用wait(),应该是会造成&nbsp;<BR>Blocking吧!而不把child&nbsp;process结束掉,又会占据resource。此时&nbsp;<BR>在两难的情况之下,使用原parent当server便显得没有效率。&nbsp;<BR>  据jackie兄你所说,在child&nbsp;process中加入另一个fork(),&nbsp;<BR>如此的话是不是原parent的service便无法发挥了?有没有办法可&nbsp;<BR>以在不结束parent的情况下,判断child是否已结束了,然後再将&nbsp;<BR>此结束的child&nbsp;process&nbsp;kill掉,且在该「判断」中能作到Non-blocking?&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>><I>&nbsp;--------------------------------------------------------------------------&nbsp;&lt;&nbsp;</I><BR>&nbsp;<BR>发信人:&nbsp;<A HREF="mailto:LFalcon.bbs@cis.nctu.edu.tw">LFalcon.bbs@cis.nctu.edu.tw</A>&nbsp;(笨鸟),&nbsp;看板:&nbsp;programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;Multi-Client&nbsp;communication!&nbsp;<BR>发信站:&nbsp;交大资科_BBS&nbsp;(Thu&nbsp;May&nbsp;16&nbsp;23:51:13&nbsp;1996)&nbsp;<BR>转信站:&nbsp;maple!news.ee.nthu!news.cis.nctu!cis_nctu&nbsp;<BR>&nbsp;<BR>==&gt;&nbsp;在&nbsp;Chicken@cis_nctu&nbsp;(无敌喷饭鸡)&nbsp;的文章中提到:&nbsp;<BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(child)&nbsp;{&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read(slave_sd,&nbsp;buf,&nbsp;BUFSIZ);&nbsp;&nbsp;&nbsp;&nbsp;&lt;-&nbsp;对client做读的动作&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write(slave_sd,&nbsp;buf,&nbsp;sizeof(buf));&nbsp;&lt;-对client做写的动作&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;中途client停止对本&nbsp;server写入&nbsp;*/&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(slave_sd);&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我想你是&nbsp;if&nbsp;(child)&nbsp;这行写错了...&nbsp;我猜你要的应该是&nbsp;if&nbsp;(!child)&nbsp;..&nbsp;</I><BR>><I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不过只看片断,&nbsp;我也不大确定就是了.&nbsp;先跟你讲什麽是&nbsp;zombie...&nbsp;</I><BR>  喔!对不起,是写错了!应该是&nbsp;if&nbsp;(!child)&nbsp;{...}&nbsp;<BR>  对!现在所使用的就是client专门作r/w,而由server来做select的动作。&nbsp;<BR>而对於产生zombie时,我所遇到的问题...就贴在上一封罗!&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>><I>&nbsp;--------------------------------------------------------------------------&nbsp;&lt;&nbsp;</I><BR>&nbsp;<BR>发信人:&nbsp;<A HREF="mailto:jackie.bbs@cis.nctu.edu.tw">jackie.bbs@cis.nctu.edu.tw</A>&nbsp;(狗脸岁月),&nbsp;看板:&nbsp;programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;Multi-Client&nbsp;communication!&nbsp;<BR>发信站:&nbsp;交大资科_BBS&nbsp;(Fri&nbsp;May&nbsp;17&nbsp;02:24:18&nbsp;1996)&nbsp;<BR>转信站:&nbsp;maple!news.ee.nthu!news.cis.nctu!cis_nctu&nbsp;<BR>&nbsp;<BR>==&gt;&nbsp;在&nbsp;LFalcon@cis_nctu&nbsp;(笨鸟)&nbsp;的文章中提到:&nbsp;<BR>><I>&nbsp;==&gt;&nbsp;在&nbsp;jackie@cis_nctu&nbsp;(狗脸岁月)&nbsp;的文章中提到:&nbsp;</I><BR>><I>&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所谓&nbsp;zombie&nbsp;process&nbsp;就是&nbsp;child&nbsp;process&nbsp;比&nbsp;parent&nbsp;process&nbsp;先&nbsp;</I><BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -