feat(tty): 实现发送SIGINT终止信号 (#952)

* 实现SIGINT终止信号传递

* 添加test_sigint测试程序
This commit is contained in:
MemoryShore
2024-10-09 19:02:14 +08:00
committed by GitHub
parent 52dc4c3ee8
commit a8753f8fff
9 changed files with 103 additions and 10 deletions

1
user/apps/test_sigint/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
test_sigint

View File

@ -0,0 +1,20 @@
ifeq ($(ARCH), x86_64)
CROSS_COMPILE=x86_64-linux-musl-
else ifeq ($(ARCH), riscv64)
CROSS_COMPILE=riscv64-linux-musl-
endif
CC=$(CROSS_COMPILE)gcc
.PHONY: all
all: main.c
$(CC) -static -o test_sigint main.c
.PHONY: install clean
install: all
mv test_sigint $(DADK_CURRENT_BUILD_DIR)/test_sigint
clean:
rm test_sigint *.o
fmt:

View File

@ -0,0 +1,29 @@
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
// 信号处理函数
void handle_signal(int signal)
{
if (signal == SIGINT)
{
printf("Caught SIGINT (Ctrl+C). Exiting gracefully...\n");
exit(0); // 终止程序
}
}
int main()
{
// 注册信号处理函数
signal(SIGINT, handle_signal);
// 模拟一个长时间运行的进程
while (1)
{
printf("Running... Press Ctrl+C to stop.\n");
sleep(5);
}
return 0;
}