2013-03-10 3 views
0

Мне нужно реализовать системный вызов внутри minix, который ждет, пока какое-то условие не будет истинным до его возвращения. Тем не менее, я нахожу, что просто пытается что-то вродеКак подождать внутри системного вызова в Minix 3

while (var != desired_value) 
{ 
    // wait 
} 

не работает, потому что в то время как он делает блокировать процесс, он также блокирует любой другой процесс, работающий в MINIX. Я даже не могу переключиться на другой виртуальный терминал и войти в систему. Я думал, что процессы minix должны запускаться независимо друг от друга, но похоже, что когда все процессы блокируются при системном вызове, тогда все остальные процессы одновременно приостанавливаются. Это может быть правильно? Спасибо

ответ

0

Конечно Minix имеет нелипкую механизм ожидания:

#include <sys/types.h> 
#include <sys/wait.h> 

pid_t wait(int *status) 
pid_t waitpid(pid_t pid, int *status, int options) 

wait вызывает его вызывающий задержать, пока не будет получен сигнал или один из его дочерних процессов завершаются.

waitpid предоставляет альтернативный интерфейс для программ, которые не должны блокироваться при сборе статуса дочерних процессов или которые хотят ждать одного конкретного ребенка.

Minix обеспечивает POSIX, поэтому вы можете использовать fork, exec и т. Д. Для управления процессами.

 Смежные вопросы

  • Нет связанных вопросов^_^