精华内容
下载资源
问答
  • Linux下直接键盘

    千次阅读 2005-03-30 15:22:00
    Linux下对键盘进行直接控制,需要首先搞清楚一些概念,如terminal、console、scancode、keycode等。我理解Linux下的键盘处理的基本过程应该是这样的:keyboard-->kbd controller-------->keyboard driver------>...

    在Linux下对键盘进行直接控制,需要首先搞清楚一些概念,如terminal、console、scancode、keycode等。我理解Linux下的键盘处理的基本过程应该是这样的:

    keyboard-->kbd controller-------->keyboard driver------>tty processing---
                  按键               生成扫描码         根据键盘模式转换
    ----tty processing------->console--------->application
             处理canonical模式等    处理Esc序列等

    关于keyboard、console的基本处理可参考《The Linux keyboard and console HOWTO》中2和3两节。关于tty的处理可参考《Advanced Programming in Unix Environment》中的11章Terminal I/O。

    理解了这个过程,要直接获得键盘输入就比较清晰了:

    首先,需要将tty的模式设置为noncanonical,参考Advanced Programming中的例子就可以了。

    其次,需要设置键盘转换模式,通常的模式下是转换为ASCII码,也可以转换为scancode(不转换)、keycode和Unicode。关于scancode的定义比较麻烦,一个键可能会产生1个、2个、4个甚至5个scancode,具体可以参考微软的文档《Keyboard Scan Code Specification》。关于keycode,Linux下有一个程序叫showkey,可以显示一个键对应的代码,由于一个键只对应于一个代码,处理起来比较简单。具体的设置使用参数为KDSKBMODE的ioctl调用即可,参考man文档console_ioctl。

    最后,可以将console设置为KD_GRAPHICS模式(用参数KDSETMODE的ioctl调用),console就进入了图形模式,不显示文本光标也不回显,同时sdtout的输出也只有返回文本模式后才会显示。

    搞清楚了过程就好办了,剩下的就是打开设备、读数据。一般的stdin就是一个tty,当然也可以打开/dev/console设备或者/dev/tty、/dev/tty1、/dev/tty2等。对于/dev/console和tty们有什么区别,我就搞不清了。至少打开console和tty后都可以用。而stdin一般就是当前的tty,如果没有重定向的话。

    当然要注意的是,一旦切换了键盘转换模式,所有给应用软件的键盘代码都会改变,可能连Ctrl-C等都不认了,所以一定要记得切换回来,调试起来也要小心,否则可能就要重新启动了:-(

    总结一下参考资料:
    《The Linux keyboard and console HOWTO》
    《Advanced Programming in Unix Environment》
    《Keyboard Scan Code Specification》
    《man文档:console_ioctl(4)》

    展开全文
  • 关于Linux下面移动硬盘不出来

    千次阅读 2013-12-04 16:57:08
    今天要一个有4t数据的seagate移动硬盘,结果插上USB口后, 用lsusb可以看到有seagate字样,硬盘分别对应sdb,sdc,sde...sdi。 但是fdisk -l看不到对应硬盘信息,用strace fdisk -l /dev/adb显示的是no such ...

    今天要读一个有4t数据的seagate移动硬盘,结果插上USB口后,

    用lsusb可以看到有seagate字样,硬盘分别对应sdb,sdc,sde...sdi。

    但是fdisk -l看不到对应硬盘信息,用strace fdisk -l /dev/adb显示的是no such device or address。

    上网查了一下基本上没有找到相关的内容信息,去seagate的官网上查了一下也不是驱动的问题。

    最后发现是Linux版本太低。。重新装了个debian就好啦!

    展开全文
  • linux C获取键盘信息

    千次阅读 2019-04-12 11:12:37
    /* 按键信息,/usr/include/linux/input-event-codes.h文件中有定义键值,例如KEY_ESC对应esc按键 */ printf ( "value = %u.\n" , ev . value ) ; /* 按键是按下还是释放,0释放、1按下、2长按 */ } } ...

    1、利用Input子系统来获取信息
    通过如下命令获取键盘对应的event id

    cat /proc/bus/input/devices
    

    我的电脑对应的是event4,实现代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <string.h>
    #include <linux/input.h>
    
    #define INPUT_KEYBOARD "/dev/input/event4"
    
    int get_key_board_from_input()
    {
        int fd = -1, ret = -1;
        struct input_event ev;
    
        fd = open(INPUT_KEYBOARD , O_RDONLY);
        if(fd < 0) {
            printf("open failed, error:%d\n", errno);
            return -1;
        }
    
        while(1) {
            memset(&ev, 0, sizeof(struct input_event));
    
            ret = read(fd, &ev, sizeof(struct input_event));
            if (ret != sizeof(struct input_event)) {
                printf("read error, ret: %d\n", ret);
                break;
            }
    
            if (ev.type == EV_KEY) {
                printf("--------------------\n");
                printf("type = %u.\n", ev.type); /* 消息类型,EV_KEY是按键 */
                printf("code = %u.\n", ev.code); /* 按键信息,/usr/include/linux/input-event-codes.h文件中有定义键值,例如KEY_ESC对应esc按键 */
                printf("value = %u.\n", ev.value); /* 按键是按下还是释放,0释放、1按下、2长按 */
            }
        }
    
        close(fd);
        return ret;
    }
    

    这个方法能很全面的获取按键的信息,但是不便的是需要root权限来运行

    2、通过更改控制台设置,获取键盘值ASCII码

    #include <stdio.h>
    #include <unistd.h>
    #include <termios.h>
    
    int get_key_board_from_termios()
    {
        int key_value;
        struct termios new_config;
        struct termios old_config;
    
        tcgetattr(0, &old_config);
        new_config = old_config;
        new_config.c_lflag &= ~(ICANON | ECHO);
        tcsetattr(0, TCSANOW, &new_config);
    
        key_value = getchar();
    
        tcsetattr(0, TCSANOW, &old_config);
    
        printf("key_value: %d\n", key_value);
        return 0;
    }
    

    无需root权限即可执行

    展开全文
  • 这里稍微注意一下的是U盘的格式最好不要NTFS,因为一般情况下NTFS格式的文件系统linux只具有的权限。就这样奇怪的事情发生了,U盘挂载之后无法对U盘内的文件更改权限,连超级用户也不行。调了一段时间之后才看到...

           话说最近在树莓派上搭建了一个owncloud,因为树莓派的存储空间有限,就插了个16G的U盘,然后设置成开机自动挂载。这里稍微注意一下的是U盘的格式最好不要NTFS,因为一般情况下NTFS格式的文件系统linux只具有读的权限。就这样奇怪的事情发生了,U盘挂载之后无法对U盘内的文件更改权限,连超级用户也不行。调了一段时间之后才看到如下文章,转载至此,方便今后查阅。个人建议将外接U盘格式化成ext3,ext4,一了百了。

           原文地址:让linux挂载的移动硬盘具有执行权限

    本文试图通过探求达到让linux系统挂载的移动硬盘具有可执行权限之目的的途径来梳理有关linux系统设备挂载、用户和群组、以及文档权限方面的基础知识。

    一、提出问题

    当插入一个windows分区格式的移动硬盘或者U盘时,linux系统自动挂载该移动硬盘到/media目录下,通过ls -al查看其权限,显示为:drwx------,证明我们可以进入到该盘符目录,但当进一步查看该盘符下的某可执行文件的权限时,发现其为-rw-------,即可以对该文件进行读写操作,但不能执行该文件,通过chmod更改权限也无济于事,此时如何获得执行权限?(再比如在移动硬盘上有一源代码,通过编译产生了目标程序,但是当通过./来执行时,却告知没有权限,同时sudo chmod +x也不起任何作用,在实际工作中遇到这样的情况时,一般可以通过将源码拷贝到linux系统磁盘中进行编译或者将编译好的目标程序拷贝到linux系统的磁盘中再使用chmod更改权限来解决,但有时候这样来回拷贝费时费力,如果能直接让linux系统挂载的移动硬盘具有执行权限就方便多了)

    二、linux设备挂载

    这一问题涉及到硬盘挂载,首先需要了解linux系统中与磁盘挂载相关的两个系统文件,即/etc/fstab和/etc/mtab,前者是系统分区信息以及系统启动时磁盘的挂载参数,该文件是一个静态文件(系统启动后不再改变,如人为改变,需要重启系统);后者是当前系统中已经挂载的磁盘列表,该文件是一个动态文件,即随系统mount和umount文件系统而随时发生改变,例如当插入U盘时,系统在mtab文件中写入该磁盘的相关信息,当拔下U盘时,系统随之删除mtab文件中有关该磁盘的信息。

    fstab文件内容的格式如下:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>          <options>                   <dump>  <pass>

    ……
    proc                       /proc                   proc    nodev,noexec,nosuid              0                 0

    ……

    mtab文件内容的格式如下:

    ……
    proc                       /proc                    proc   rw,noexec,nosuid,nodev          0                 0

    ……

    可见fstab和mtab文件中的格式是一样的,都是按照“设备名称—挂载点—分区类型—挂载选项—dump选项—pass选项”的格式组织列表。

    1、设备名称是指系统中设备的名称,比如/dev/sda1或/etc/sdb1或/etc/sdc1等,这些设备名称可以通过sudo fdisk -l命令来查看。(上文fstab和mtab文件格式示例中的proc设备是一个虚拟设备,并不在磁盘中真实存在,而仅仅存在于内存中,存储有关进程和系统的信息)

    2、挂载点实际上就是为挂载磁盘创建的文件夹,比如./,./usr,和./swap这样的系统默认挂载点,当然我们可以自己使用mkdir创建一个文件夹作为挂载点。

    3、分区类型在linux下面有ext2,ext3,ext4,jfs,jfs2,reiserfs,reiser4,swap等,在windows下面有FAT和NTFS等。

    4、常用的挂载选项包括:(1)auto和noauto: auto允许系统自动挂载或使用mount -a就能挂载,fstab默认就是这个选项 ;noauto使系统开机不自动挂载 或使用mount -a时不挂载;(2)rw和ro:rw表示以读写权限挂载该设备,ro表示以只读权限挂载该设备;(3)suid和nosuid:suid表示允许对该设备进行uid和gid的设置操作,nosuid就是不允许设置uid和gid;(4)dev和nodevdev表示同时挂载文件系统上的特殊设备,nodev表示不挂载这些特殊设备;(5)exc和noexc:exec表示允许执行该文件系统下的二进制文件,noexc当然表示不允许执行二进制文件;(6)user、nouser、users和owner:user允许指定的普通用户挂载该设备,nouser表示禁止普通用户挂载该设备(仅root可以挂载该设备),users表示允许所有普通用户挂载该设备,owner表示仅设备所有者可以挂载。user和users选项同时隐含noexec,nosuid,nodev选项;(7)sync和asnyc:sync表示对该设备的I/O操作同步进行,不进行缓冲处理,而async表示不同步,进行缓冲处理;(8)defaults: 该选项是rw, suid, dev, exec, auto, nouser, and async这些选项的组合。此外,linux系统针对不同的文件系统还可以设定其他特别选项,例如,对Windows下的NTFS文件系统,可以设置utf8(表示采用UTF-8转换文件名称)、uid=****(挂载设备的指定用户id,可以通过id命令或者查看/etc/passwd文件方式获得)、gid=****(挂载设备的指定用户群组id)和umask=***(挂载设备的权限屏蔽,八进制数值)等,对Windows下的FAT(包括msdos,umsdos,vfat等)文件系统,可以设置uid=****,gid=****,umask=***,dmask=***(挂载设备时应用于目录的权限屏蔽,八进制数值)和fmask=***(挂载设备时应用于普通文件的权限屏蔽,八进制数值)。更多挂载选项可以参见man mount。

    5、dump选项用来设置是否让备份程序dump备份文件系统,0为不备份,1为备份,如果上次用dump备份,将显示备份至今的天数。

    6、pass选项,告诉fsck程序在开机时以什么顺序检查文件系统,为0就表示不检查,(./)分区只能是1,其它的分区只能是2,当数字相同就同时检查。

    三、linux用户和群组以及权限

    了解了上文中所讲的设备挂载,基本已经知道如何在linux下面挂载windows分区格式的移动硬盘了,关键就是设置挂载选项从而获得相应权限。在linux系统中权限设置与用户和群组概念直接相关,比如在上文中使用ls -al命令时,获得的有关权限的信息(10个字符,如drwx------)可以分成四个部分,即目录/文件标识(第1个字符,d表示目录,-表示文件,其他还可以为l,b和c)、所有者权限(第2-4个字符)、所有者所在的用户群组权限(第5-7个字符)以及其他用户权限(最后3个字符)。权限在linux系统安全性方面具有重要作用,在此不述。权限的表示有两种方式,即字符式和数字式:字符式用如上文中的r、w和x三个字符来分别表示读、写和执行权限,-表示不具有任何权限;而数字式的权限表示方法用4、2、1三个数字分别表示读、写和执行权限,0表示不具有任何权限,用数字式表示文档所有者、群组和其他用户的权限时同一个组的权限需要累加,例如某文档的权限是- rwx rw- ---,则用数字式表示为760。

    至此,我们可以回过头去解决问题了,当挂载Windows分区格式的文件系统时,我们可以通过uid=****,gid=****和umask=***/dmask=***/fmask=***来设置权限,uid和gid的设置并不难,直接设置为自己的uid和gid就可以;关于权限mask的设置采用数字式的,同样第一个数字表示所有者的权限mask,第二个数字表示群组的权限mask,第三个数字表示其他用户的权限mask,如果umask=000,就表示不屏蔽任何用户的任何权限,即所有用户具有读、写和执行权限,再例如fmask=033,就表示文档所有者具有读、写和执行权限,而群组和其他用户只具有读取的权限,而屏蔽了权限3(1和2之和)。

    四、解决问题

    综上,可以在/etc/fstab中添加像下面这样的挂载配置,并重启系统让系统挂载硬盘,从而获得执行权限。

    # <file system>   <mount point>       <type>                <options>                                 <dump>        <pass>

      /dev/sdb1        /media/sdb1         ntfs      utf8,uid=1000,gid=1000, umask=000                     0             0

    展开全文
  • linux读取U盘操作

    万次阅读 2018-03-20 09:30:58
    1.查看挂载设备cd /devls列表中sda表示磁盘,sdb表示外部设备,通常sbd+数字就是当前的U盘,把所有的外部设备去掉,剩下的那个就是U盘,也可以一个一个试。2.外部设备挂载点cd /mntls此时是没有文件的。...
  • ubuntu linux读取U盘

    万次阅读 2017-09-22 21:20:40
    ubuntu linux终端查看虚拟机设备: sudo fdisk –l 一般会出现/dev/sdb1的设备,并显示出U盘内存。 读取U盘失败解决办法方法: 1、按下Win+R打开运行,输入services.msc,打开服务; 2、将VMware ...
  • u盘在linux上只能不能写

    千次阅读 2015-12-23 19:15:08
    上面是u盘插上去系统自动挂载的 , 但是只能不能写 solution #umount /dev/sdb4 #mount /dev/sdb4 /test root@jack-desktop:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 914G 266G 601G 31% ...
  • linux 移动硬盘文件无法改变权限

    千次阅读 2017-12-14 11:56:31
    原文地址:让linux挂载的移动硬盘具有执行权限。 本文试图通过探求达到让linux系统挂载的移动硬盘具有可执行权限之目的的途径来梳理有关linux系统设备挂载、用户和群组、以及文档权限方面的基础知识。一、提出问题...
  • Linux下检查硬盘是否为固态硬盘

    千次阅读 2015-05-05 16:47:44
    Linux下检查硬盘是否为固态硬盘Linux 下判断硬盘是否为固态硬盘可以通过判断硬盘是否是转动磁盘来判定。...Linux可以通过 sysfs:#cat /sys/block/sda/queue/rotational返回 0, 就是 SSD。 返回 1, 就是 HDD
  • Windows下管理Linux格式硬盘

    千次阅读 2020-03-01 23:48:10
    想了一下,路由是Linux内核,所以硬盘也是Linux格式,Windows下不出来很正常。 于是乎赶紧上网找了一个小工具,不到1分钟搞定。现在把小工具给大家分享一下,挺好用的。 Ext2 Volume Manage, 我的网盘链接 ,...
  • Linux挂载局域网硬盘(Linux 挂在网络硬盘),Ubuntu (Cubieboard CC-A80)挂在小米路由器硬盘。 小米路由器上的硬盘可以用来局域网共享资源,备份,网络下载,其实它就是个Samba服务,在windows下我们可以按...
  • Linux下硬盘SMART检查

    千次阅读 2016-12-14 10:51:21
    在Windows的系统下大家都知道有很多第三方软件可以实现磁盘的检查,但是在Linux系统下,其实有一个默认的检查工具SMART,SMART是和主板BIOS上相应功能配合的要使用SMART,必须先进入到主板BIOS设置里边启动相关设置...
  • Linux工作站

    千次阅读 2007-12-02 23:08:00
    Linux工作站网络环境构建说明书 兰书梅 赵 启 赵 纪 吉林大学国家Linux技术培训与推广中心2007-12-2 1 无工作站及其原理1.1 无工作站无工作站是没有硬盘的计算机终端。
  • linux 读取U盘的VID和PID

    千次阅读 2016-05-19 22:42:28
    工作需要,需要用程序读取U盘的VID和PID,VID是指idVendor,PID是指idProduct。...libusb库中存储两个字段信息的数据结构为:struct libusb_device_descriptor。简单说流程分为四步 调用libusb_init进行初始化,我
  • linux2.6硬盘扇区直接读写程序

    千次阅读 2015-04-29 10:37:51
    下面的程序可以在linux2.6内核直接读写硬盘的指定扇区,也是根据网上一个朋友的做法做了修改的;有两个不是很明白的地方就是:1、bd_claim函数的使用,这个是个递归函数,像是匹配内存指针和设备,但是调用会返回...
  • Linux挂载光盘和配置本地yum源

    千次阅读 2020-01-17 09:13:02
    即将光盘的内容到/dvd目录中。 mkdir /dvd mount /dev/cdrom /dvd #临时手动挂载光盘 ls /dvd #显示/dvd目录的文件列表 df -hT #查看磁盘空间 umount /dev/cdrom #(不要做)卸载光盘(类似于u盘...
  • LINUX如何克隆硬盘

    千次阅读 2020-03-12 14:52:54
    Linux有四个你应该考虑的磁盘克隆解决方案: dd Partimage Partclone Clonezilla 今天讲讲dd的用法,之所以先说dd因为简单易用而且兼容性好,首选。 使用dd dd是一个简单,多功能,强大的工具。可以用来把数据...
  • Linux硬盘分区

    千次阅读 2008-01-03 09:42:00
    1. Linux 硬盘分区的实际操作 尽管可以根据我们已经提到的分区原则,将L i n u x 装在一个单一的大分区中,但更好的主意是将它分开。综合了单一分区的简单性和多分区的灵活性,我们推荐以下配置。请注意: 如果你想...
  • 如何让VMware下Linux识别U盘

    千次阅读 2015-06-03 11:08:10
    /dev/sda2 575 652 626535 82 Linux swap Disk /dev/sdb: 130 MB, 130416640 bytes 8 heads, 32 sectors/track, 995 cylinders Units = cylinders of 256 * 512 = 131072 bytes  Device ...
  • 我们都知道 Windows 下我们可以使用 UltraISO(中文版叫软碟通)制作U盘系统启动,使用方法可能N多人都会,本文主要想介绍下 Linux 制作U盘启动的方法, Linux 下的一条命令就可以完成哦。
  • Linux的U盘挂载以及问题解决

    千次阅读 2018-11-08 00:59:15
    一、U盘的挂载 1.查询挂载点以及挂载模式 用mount命令查询挂载模式 2.更改挂点 ...3.U盘出现可模式,消去可的方法 模拟实验环境 改为可挂载 二、如果出现无法卸载的处理方式 ...
  • Linux查看系统基本信息,版本信息(最全版)

    万次阅读 多人点赞 2018-10-18 15:04:29
    Linux下如何查看版本信息, 包括位数、版本信息以及CPU内核信息、CPU具体型号 1.uname -a (Linux查看版本当前操作系统内核信息) 2.cat /proc/version (Linux查看当前操作系统版本信息) 3.cat /etc/...
  • linux读取硬盘指定扇区

    千次阅读 2013-12-12 12:06:36
    主要参考:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=288776&fpart=all http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=69203&page=&view=&sb=&o=&vc=1 ...
  • 问题描述:将U盘插入linux(centos7)系统下,直接自动挂载了(并没有设置自动挂载)。然而U盘内文件都是只读文件,修改权限也不能改。 解决方法: df -Th查看U盘的分区和挂载点 卸载U盘$ umount /run/media/lianzk/#...
  • linux下硬盘读写速度测试

    万次阅读 2013-10-11 13:28:37
     速度 105 209.45 316.61  写速度 105 75.7 45.2       4. 附录 hdparm -h -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取...
  • 公司项目遇到问题:开发的一个项目,要读取U盘中的歌曲列表信息,显示的时候出现中文...2. 使用fdisk -l命令查看磁盘信息,找到u盘(可以根据显示的大小确定)3. 在/mnt下创建挂载点,例如创建usb文件夹:mkdir /mnt...
  • windows下查看识别linux硬盘工具

    热门讨论 2010-08-28 10:11:13
    在windows 下安装此驱动后,便可识别LINUX硬盘文件,方便宜查看拷贝LINUX下的文件
  • 用dd命令制作U盘启动详解 dd命令做usb启动十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs=1M是块的大小,后面的数值大,写的速度相对块一点,但也不是无限...
  • 本地硬盘安装 Linux RedHat Linux 9.0

    千次阅读 2012-02-21 13:47:33
    每次上天保佑好不容易第一张顺利完了。刚刚得意的时候,第二张又不动了。气死我了。第二天找了些资料看了下,没用1小时就搞定了。。其实用本地硬盘装比用光盘装还好,更快,也不用换换来换去的了。今天把这...
  • 其中*为boot区,也就是system为linux,则可以挂载这个区了。(附上挂载后插卡文件类型命令) //一下是命令复制粘贴 需要挂载才能查看的命令:   1.mount [root@localhost dev]# ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,881
精华内容 61,952
关键字:

linux读盘信息

linux 订阅