Вероятно, нет; для перезапуска стандартного потребителя ввода требуется способность этого потребителя самостоятельно выполнять exec
.
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
char buf[1];
int ret;
int linenumber = 0;
fprintf(stderr, "collect me some input...\n");
while (1) {
ret = read(STDIN_FILENO, buf, 1); // unbuffered. inefficient
if (ret == 0) // EOF
exit(EXIT_SUCCESS);
else if (ret < 0)
err(1, "read failed");
write(STDOUT_FILENO, buf, 1);
if (buf[0] == '\n') {
linenumber++;
if (linenumber == 4) { // restart ourself every four lines...
execvp(*argv, argv);
err(1, "exec failed");
}
}
}
exit(EXIT_SUCCESS);
}
Которая при запуске перезапускается каждые четыре строки:
$ make execself
cc execself.c -o execself
$ perl -E 'say "line $_" for 1..8' | ./execself
collect me some input...
line 1
line 2
line 3
line 4
collect me some input...
line 5
line 6
line 7
line 8
collect me some input...
$
Я собираюсь выйти из ситуации и предположить, что сокет или очередь сообщений могут лучше удовлетворить потребность в случайном отключении и перезапуске потребителя вывода, поскольку тогда сообщения (до предела буфера или с блокировкой ...) остаются, пока процесс потребителя завершается и перезапускается.Или вы могли бы написать какой-то прокси-сервер, который читает стандартный ввод и допускает случайную недоступность последующего потребителя java, или чтобы иметь возможность более или менее изящно перезапускать указанного потребителя.
(Обратите внимание, что при буферизованном чтении потребителю, возможно, потребуется приложить дополнительные усилия, чтобы обработать или каким-либо образом передать любые неполные данные, прочитанные буферизованным чтением, но не обработанные во время перезапуска или выхода ...)
Если у вас гость Centos Linux
, вам необходимо установить пакет DKMS (поддержка динамических модулей ядра).
# yum install dkms
# yum install virtualbox-guest-additions
Для справки вы можете проверить это
Без virtualbox-guest-adds
инструмент
Отключить службу ntp
chkconfig ntpd off
Для хоста Windows
Перейдите в
C: \ Documents and Settings \ .VirtualBox \ Machines \
и отредактируйте XML-файл.
-> Создать резервную копию этого файла <-
Добавьте строку
VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled "0"