• 7799阅读
  • 1回复

请教读取硬盘序列号的open操作"/dev/sda"权限问题!! [复制链接]

上一主题 下一主题
离线ankoe
 
只看楼主 倒序阅读 楼主  发表于: 2009-06-04
#include <QString>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <linux/hdreg.h>
#include <fcntl.h>
#include <errno.h>

int main(){
        struct hd_driveid id;

        int fd = open("/dev/sda", O_RDONLY|O_NONBLOCK);

        if (fd < 0)
        {
                perror("/dev/sda");
        }

        if(!ioctl(fd, HDIO_GET_IDENTITY, &id))
        {
            QString s1((char *)id.serial_no);
            printf("Serial Number=%s\n",id.serial_no);

        }
}
程序执行后提示/dev/sda: Permission denied
我的程序要求不在root用户下执行,但/dev/sda打不开,我要怎样处理才行?哪位大哥有读取硬盘序列号的qt代码?提供一份参考下,或指点下思路也行。谢谢啦。
离线jiajun1967

只看该作者 1楼 发表于: 2009-06-07
假设你编译后产生的执行文件为a.out

1。先将这个文件的用户改为root

      输入:chown root a.out

2。再将这个文件的粘贴位置上

 输入:chmod u+s a.out

这样就可以了
快速回复
限100 字节
 
上一个 下一个