Я создаю свою собственную оболочку на C. Я хочу реализовать встроенную функцию с именем alarm, которая принимает целочисленный аргумент для количества секунд. Встроенная функция просто отправляет пользователю сообщение через i секунд (один раз), но функциональность оболочки тем временем должна продолжать работать.
Вот что у меня есть на данный момент:
int seconds;
int main(int argc, char const *argv[], char* envp[]){
...
signal(SIGALRM, alarmHandler);
...
}
void alarmHandler(int sig) {
signal(sig, SIG_IGN);
alarm(seconds);
printf("%s\n", "message");
signal(SIGALRM, alarmHandler);
}
void mainProgram(char* string, char* argument){
... //built ins that don't require forking
pid_t processID = fork();
if(processID==0){ //child
if(strcmp(string, "alarm") == 0){
seconds = atoi(argument);
signal(SIGALRM, alarmHandler);
}else{ // parent
usleep(100000)
}
Ясно, что это не работает. Я немного заблудился. Я пробовал это последние пару часов и не знаю, что делать.