0

我正在尝试将我的第一个代码制作为 Verifone 设备。该设备具有 Verix OS 和 Arm 处理器。我正在关注“操作系统编程工具参考手册”,它的代码运行良好:

#include <string.h>
#include <svc.h>
char Greeting[] = "Hello!";
void main (void)
{
    int display = open(DEV_CONSOLE, O_WRONLY);
    write(display, Greeting, strlen(Greeting));
    normal_tone();
    close(display);
}

但是,我的代码不能正常工作。为什么?这个和其他变体可以编译,但键盘输入不起作用。

#include <string.h>
#include <svc.h>
#include <stdio.h>
int main (void)
{
    int display = open(DEV_CONSOLE, O_RDWR);
    char result[30];
    char ent[2]="\0\0";
    write(display, "\nEnter a number: ", 17);
    read(display, ent, 1);
    sprintf(result,"\nPressed key: %s", ent);
    write(display, result, strlen(result));
    normal_tone();
    close(display);
    return 0;
}

我已经尝试过scanf()、fscanf()、getchar()、fgetc()、fgets()……总是会发生类似的事情。Write() 和类似功能有时有效,有时无效,这取决于与 read()、Scanf() 的组合......但是 read() 功能和类似功能在我的 Verifone 设备上从未工作过。

4

1 回答 1

0
int display = open(DEV_CONSOLE, O_WRONLY);

O_WRONLY表示只写。尝试O_RDWR改用:

int display = open(DEV_CONSOLE, O_RDWR);
于 2018-03-19T23:39:57.377 回答