当前位置: 技术问答>linux和unix
scull测试时的奇怪问题,谢谢
来源: 互联网 发布时间:2016-02-06
本文导语: scull 模块加载后, 测试如下: [root@localhost myscull]# vi tt [root@localhost myscull]# cp tt /dev/scull0 cp:是否覆盖“/dev/scull0”? y [root@localhost myscull]# cat /dev/scull0 This is just a test. 这样结果是对的吧? 不过用下面test.c...
scull 模块加载后,
测试如下:
[root@localhost myscull]# vi tt
[root@localhost myscull]# cp tt /dev/scull0
cp:是否覆盖“/dev/scull0”? y
[root@localhost myscull]# cat /dev/scull0
This is just a test.
这样结果是对的吧?
不过用下面test.c测试时就出现了错误,不知道是什么原因 ?
结果和测试代码如下,谢谢
[root@localhost myscull]# ./test
Please input a string to write the device
This is just a test.
The value of buf is :This
Read the string from the device...
is ju
================================
test.c
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7
8 int main()
9 {
10 /*device path*/
11 char path[]="/dev/scull0";
12 char buf[120],p[120]="what";
13 int num;
14 int f = open(path,O_RDWR);
15
16 if(f == -1){
17 printf("device open error!n");
18 return 1;
19 }
20
21 printf("Please input a string to write the device n");
22 scanf("%s",buf);
23 printf("The value of buf is :%sn",buf);
24 num = write(f,buf,strlen(buf)+1);
25
26 printf("Read the string from the device...n");
27 read(f,p,num);
28 printf("%sn",p);
29
30 close(f);
31
32 return 0;
33 }
测试如下:
[root@localhost myscull]# vi tt
[root@localhost myscull]# cp tt /dev/scull0
cp:是否覆盖“/dev/scull0”? y
[root@localhost myscull]# cat /dev/scull0
This is just a test.
这样结果是对的吧?
不过用下面test.c测试时就出现了错误,不知道是什么原因 ?
结果和测试代码如下,谢谢
[root@localhost myscull]# ./test
Please input a string to write the device
This is just a test.
The value of buf is :This
Read the string from the device...
is ju
================================
test.c
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7
8 int main()
9 {
10 /*device path*/
11 char path[]="/dev/scull0";
12 char buf[120],p[120]="what";
13 int num;
14 int f = open(path,O_RDWR);
15
16 if(f == -1){
17 printf("device open error!n");
18 return 1;
19 }
20
21 printf("Please input a string to write the device n");
22 scanf("%s",buf);
23 printf("The value of buf is :%sn",buf);
24 num = write(f,buf,strlen(buf)+1);
25
26 printf("Read the string from the device...n");
27 read(f,p,num);
28 printf("%sn",p);
29
30 close(f);
31
32 return 0;
33 }
|
num = write(f,buf,strlen(buf)+1);
建议打印在这里打印一下num的值。
怀疑是驱动里面write或者read对第3个参数的操作有问题?返回值可能也有问题,中途printk出来,查查看吧。
建议打印在这里打印一下num的值。
怀疑是驱动里面write或者read对第3个参数的操作有问题?返回值可能也有问题,中途printk出来,查查看吧。
|
scanf("%s",buf);
你通过这种方式读 This is just a test.
碰到第一个空格就判定字符串结束,buf的值自然就是This,
如果要读取全部字符串,用gets(buf);
你通过这种方式读 This is just a test.
碰到第一个空格就判定字符串结束,buf的值自然就是This,
如果要读取全部字符串,用gets(buf);
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。