1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 14:57:34 +00:00

Basic ^C interrupt implementation.

For testing, I made cat put itself into a new process group.
This should eventually be done by sh between fork() and exec().
This commit is contained in:
Andreas Kling 2018-11-02 14:06:48 +01:00
parent 621217ffeb
commit 10b666f69a
11 changed files with 94 additions and 38 deletions

View file

@ -5,6 +5,7 @@
int main(int argc, char** argv)
{
setpgid(0, 0);
if (argc != 2) {
printf("usage: cat <file>\n");
return 1;

View file

@ -157,7 +157,14 @@ static int runcmd(char* cmd)
//printf("Exited normally with status %d\n", WEXITSTATUS(wstatus));
} else {
if (WIFSIGNALED(wstatus)) {
printf("Terminated by signal %d\n", WTERMSIG(wstatus));
switch (WTERMSIG(wstatus)) {
case SIGINT:
printf("Interrupted\n");
break;
default:
printf("Terminated by signal %d\n", WTERMSIG(wstatus));
break;
}
} else {
printf("Exited abnormally\n");
}