如何在linux下读写usb设备的数据

如何在linux下读写usb设备的数据,第1张

Linux不直接支持NTFS文件系统,如果U盘是NTFS文件系统就无法直接挂载使用。首先用lsblk列出所有块设备:

1

lsblk

sd表示SCSI磁盘,后面跟a,b,c之类的字母表示第几个磁盘,字母之后再跟数字表示这个磁盘的第几个分区。大部分人只有一个硬盘,此时再接一个U盘,这个U盘就是sdb,U盘上的分区就是sdb1。除此以外,还可以根据显示的容量判断U盘设备名是sdb还是sdc。其他情况以此类推。

然后可以在用户目录创建一个usb目录:(也可以根据喜好设置在其他地方,下面的挂载地址跟着改变即可)

1

mkdir ~/usb1

最后把U盘分区挂载到这个目录即可:(可能会提示输入密码,输入密码后回车即可)

1

sudo mount /dev/sdb1 ~/usb1

然后就可以通过访问 ~/usb1目录来访问U盘:

1

2

cd ~/usb1

ls

最后要拔出U盘以前,要卸载U盘:(卸载时要退出usb1目录,不然无法卸载)(可能会提示输入密码,输入密码后回车即可)

配置文件为 conf.txt

测试代码如下,注意链接的时候加上 -lpthread 这个参数

#include <stdio.h>

#include <errno.h>//perror()

#include <pthread.h>

#include <unistd.h>//sleep()

#include <time.h>// time()

#include <stdlib.h>//rand()

#define FD "conf.txt"

typedef void *(*fun)(void *)

struct my_struct

{

unsigned time_to_wait

int n

}

void *test_thread(struct my_struct *)

int main (int argc, char const *argv[])

{

FILE *fp = fopen(FD, "r")

if (fp == NULL)

{

perror(FD)

return -1

}

srand((unsigned)time(NULL))//初始化随机种子

int thread_count

fscanf(fp, "%d", &thread_count)

fclose(fp)

if (thread_count <= 0)

{

printf("线程数<1,退出程序。\n")

return -1

}

pthread_t *ptid = (pthread_t *)malloc(sizeof(pthread_t) * thread_count) //保存线程ID

int i

for (i = 0i <thread_counti++)

{

int tw = rand() % thread_count + 1//随机等待时间

struct my_struct * p = (struct my_struct *)malloc(sizeof(struct my_struct))

if (p == NULL)

{

perror("内存分配错误")

goto ERROR

}

p->time_to_wait = tw

p->n = i + 1

int rval = pthread_create(ptid + i, NULL, (fun) test_thread, (void *)(p))//注意这里的强制转换(两个)

if (rval != 0)

{

perror("Thread creation failed")

goto ERROR

}

//sleep(1) //这句加也可以,不加也可以。最开始的时候加上这个是为了让两个线程启动的时候之间有一定的时间差

}

printf("主线程启动\n\n")

fflush(stdout)

for (i = 0i <thread_counti++)

{

pthread_join(*(ptid + i), NULL)//等待所有线程退出。

}

printf("\n主线程退出\n")

ERROR:

free(ptid)

return 0

}

void *test_thread(struct my_struct * p) //线程启动的时候运行的函数

{

printf("第%d个线程启动,预计运行%d秒\n", p->n, p->time_to_wait)

fflush(stdout)

sleep(p->time_to_wait) //让线程等待一段时间

printf("第%d个线程结束\n", p->n)

fflush(stdout)

free(p)

return NULL

}

你的第二个问题我在百度HI回你了~

跟WINDOWS一样吧。硬盘,光盘,软盘,可移动磁盘,鼠标,打印机,网卡,磁盘。。。

常见硬件设备在linux中的代号:

IDE硬盘 /dev/hd[a-d]

SCSI硬盘 /dev/sd[a-d]

光驱 /dev/cdrom

软驱 /dev/fd[0-1]

打印机 /dev/lp[0-1]

鼠标 /dev/mouse

磁盘 /dev/ht0(IDE) /dev/st0 (SCSI)

网卡 /dev/ethn (n由0开始)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8624258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存