如何通过ctrl+c终止自己的运行程序?

mingjava 2003-06-08 10:46:57
编写了一个小shell,想通过用户键入ctrl+C终止该shell程序,该怎么做?谢谢
...全文
914 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Justin 2003-06-09
  • 打赏
  • 举报
回复
哦,上面是内核态程序,用户程序是这样的:

#include <signal.h>

static void catch_sigint( int );

int main( int argc, char** argv ) {
struct sigaction sa_old;
struct sigaction sa_new;

// set up signal handling
sa_new.sa_handler = catch_sigint;
sigemptyset(&sa_new.sa_mask);
sa_new.sa_flags = 0;
sigaction(SIGINT, &sa_new, &sa_old );

/* continue */
while(1) {
/* process loop that goes on forever */
}
}

static void catch_sigint( int signo ) {
printf("Catch Sigint\n");
exit(1);
}
天知道 2003-06-08
  • 打赏
  • 举报
回复
kill -9 Program
Justin 2003-06-08
  • 打赏
  • 举报
回复
if (signal_pending(current))
return -ERESTARTSYS;
mingjava 2003-06-08
  • 打赏
  • 举报
回复
kill函数?kill是函数吗?是系统命令把。我自己写了一个设shell,模仿c shell写的

也具有一部分功能了 后台执行 输出输入重定向等,现在我想让用户键入ctrl+c的时候终止

shell程序 我现在ctrl+c没有作用
林雨亭 2003-06-08
  • 打赏
  • 举报
回复
ctrl+c是系统支持的功能,所以你的程序没有必要实现这种功能。
如果想用程序关掉别的程序,可以使用kill函数,向对应的进程发送终止信号。
signal不是发送信号的函数。
CoolQ 2003-06-08
  • 打赏
  • 举报
回复
signal()
Joran 2003-06-08
  • 打赏
  • 举报
回复
我知道用C可以发SIGINT信号。
lysamper 2003-06-08
  • 打赏
  • 举报
回复
那你试一试ctrl+z啊
mingjava 2003-06-08
  • 打赏
  • 举报
回复
我的意思是在程序中实现,kill是命令不是函数吧

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧