免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 15857 | 回复: 24
打印 上一主题 下一主题

如何在c语言中实现ctrl+z。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-25 17:46 |只看该作者 |倒序浏览
5可用积分
如题,我现在要向某个程序发送一串数据,其中包括"ctrl+z"的操作,要怎么来实现呢?网上查了好久,也没有什么太好的解决办法,希望哪位大侠给予指导一下。
比如:
1232131321<ctrl+z>
先谢谢了

最佳答案

查看完整内容

稍微改一下上面的程序,应该就可以实现你的需求了

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2008-11-25 17:46 |只看该作者
稍微改一下上面的程序,应该就可以实现你的需求了

论坛徽章:
0
3 [报告]
发表于 2008-11-25 19:50 |只看该作者

回复 #1 fengyetang 的帖子

这个的 的ASCII码是26,你可以作为一个处理点

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2008-11-25 20:43 |只看该作者
原帖由 fengyetang 于 2008-11-25 17:46 发表
如题,我现在要向某个程序发送一串数据,其中包括"ctrl+z"的操作,要怎么来实现呢?网上查了好久,也没有什么太好的解决办法,希望哪位大侠给予指导一下。
比如:
1232131321
先谢谢了

ctlz.c

  1.   1 #include <signal.h>
  2.   2 #include <stdlib.h>
  3.   3 #include <stdio.h>
  4.   4
  5.   5 static void ctrl_z (int signal)
  6.   6 {
  7.   7         if (signal == SIGTSTP) {
  8.   8                 printf("got ctrl + z\n");
  9.   9         } else {
  10. 10                 printf("receive unresolved signal\n");
  11. 11         }
  12. 12 }
  13. 13
  14. 14 int main()
  15. 15 {
  16. 16         if (signal(SIGTSTP, ctrl_z) == SIG_ERR) {
  17. 17                 printf("can't catch SIGTSTP\n");
  18. 18                 return 0;
  19. 19         }
  20. 20         printf("register SIGTSTP success\n");
  21. 21         while (1) {
  22. 22                 pause();
  23. 23         }
  24. 24         return 0;
  25. 25 }
复制代码


# gcc ctlz.c -o ctlz
# ./ctlz
register SIGTSTP success
^Zgot ctrl + z

^Zgot ctrl + z
^Zgot ctrl + z
^Zgot ctrl + z
^Zgot ctrl + z
^C

论坛徽章:
0
5 [报告]
发表于 2008-11-25 20:56 |只看该作者
dream 兄真是快呀,呵呵

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2008-11-25 21:12 |只看该作者
原帖由 bitmilong 于 2008-11-25 20:56 发表
dream 兄真是快呀,呵呵

支持bitmilong兄的版面呀

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2008-11-25 21:52 |只看该作者
改进版的,接收标准输入传送的数据。可以参照改进:
  1 #include <signal.h>
  2 #include <stdlib.h>
  3 #include <stdio.h>
  4
  5 #define MAX_LEN 250
  6 char g_buf[MAX_LEN];
  7 static void ctrl_z (int signal)
  8 {
  9         if (signal == SIGTSTP) {
10                 printf("got ctrl + z\n");
11                 gets(g_buf);
12         } else {
13                 printf("receive unresolved signal\n");
14         }
15 }
16
17 int main()
18 {
19         if (signal(SIGTSTP, ctrl_z) == SIG_ERR) {
20                 printf("can't catch SIGTSTP\n");
21                 return 0;
22         }
23         printf("register SIGTSTP success\n");
24         while (1) {
25                 pause();
26                 printf("stdin: %s\n", g_buf);
27         }
28         return 0;
29 }

论坛徽章:
0
8 [报告]
发表于 2008-11-25 23:49 |只看该作者
原帖由 dreamice 于 2008-11-25 21:52 发表
改进版的,接收标准输入传送的数据。可以参照改进:
  1 #include
  2 #include
  3 #include
  4
  5 #define MAX_LEN 250
  6 char g_buf[MAX_LEN];
  7 static void ctrl_z (int signal)
  8 {
...

多谢了。呵呵,大家都dream兄。。。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2008-11-26 09:02 |只看该作者
原帖由 fengyetang 于 2008-11-25 23:49 发表

多谢了。呵呵,大家都dream兄。。。


呵呵,不必客气

论坛徽章:
0
10 [报告]
发表于 2008-11-26 09:15 |只看该作者
幸福吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP