Неблокирующие ncurses getch () в Java ffmJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Неблокирующие ncurses getch () в Java ffm

Сообщение Anonymous »

У меня есть функция ржавчины с именем init , которая вызывает следующие функции ncurses (в следующем порядке): initscr () , cbreak () , клавиша (stddscr, true) , getch () force indwin () .

Код: Выделить всё

#[unsafe(no_mangle)]
pub extern "C" fn init() {
unsafe {
_init();
}
}
где _init - функция FFI, объявленная как SO:

Код: Выделить всё

#[link(...)]
unsafe extern "C" {
pub fn _init();
}
< /code>
Эта функция реализована в C как таковой: < /p>
void _init() {
initscr();
cbreak();
keypad(stdscr, TRUE);
getch();
endwin();
}
< /code>
Эта библиотека ржавчины составлена ​​как динамическая библиотека C (.so) < /p>
Мой код Java выглядит следующим образом: < /p>
public class Init {
public void init() throws RuntimeException {
Linker linker = Linker.nativeLinker();

try(Arena arena = Arena.ofConfined()) {
SymbolLookup lookup = SymbolLookup.libraryLookup(Path.of(...), arena);

Optional optionalInitAddress = lookup.find("init");

if(optionalInitAddress.isPresent()) {
MemorySegment initAddr = optionalInitAddress.get();
FunctionDescriptor initDesc = FunctionDescriptor.ofVoid();
MethodHandle init = linker.downcallHandle(initAddr, initDesc);

init.invoke();
} else {
throw new NoSuchElementException();
}
} catch(Throwable e) {
throw new RuntimeException(e);
}
}
}
Когда я называю эту функцию из Java, используя API FFM, мой терминал просто мерцает, а программа заканчивается, не ожидая getch () .
При дальнейшем осмотре, getch и Cbrea 0.
Я не уверен, почему Java демонстрирует это странное поведение.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... n-java-ffm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Неблокирующие ncurses getch () в Java ffm
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Не блокирующие ncurses getch () в Java ffm [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Не блокирующие ncurses getch () в Java ffm [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»