Memoryドライバ-テストプログラム
1551 ワード
授業実践4:
•
「実践」参照
3
」のテストプログラム、作成
memory-26.c
のテストプログラム
test-memory-26.c
、マルチスレッドを使用する必要はありません.テストには、データの書き込みと読み取りが含まれます.
,
のように
《
Linux
設備駆動開発入門
(
中国語版
).
pdf
》
P18
ページ
内のテストメソッドと同様に、複数の文字を書き込む場合は、実際に最後の文字(たとえば、「
abc
”
を選択すると、実際に「
c
”.
gets()関数は安全ではありません...
•
「実践」参照
3
」のテストプログラム、作成
memory-26.c
のテストプログラム
test-memory-26.c
、マルチスレッドを使用する必要はありません.テストには、データの書き込みと読み取りが含まれます.
,
のように
《
Linux
設備駆動開発入門
(
中国語版
).
》
P18
ページ
内のテストメソッドと同様に、複数の文字を書き込む場合は、実際に最後の文字(たとえば、「
abc
”
を選択すると、実際に「
c
”.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> //UNIX
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> //
#include <termios.h> //PPSIX
#include <errno.h> //
#include <pthread.h>
int main()
{
char p[20] = {0};
char tmp[20] = {0};
int ret = 0;
int memoryfd;
// memory
if ((memoryfd = open("/dev/my_memory", O_RDWR|O_NONBLOCK)) < 0) {
printf("cannot open the memory device
");
exit(0);
}
while (1) {
printf("Input(quit is exit):");
gets(p); //
/*
if (!(fgets(p, 20, stdin))) {
exit(0);
}
*/
//quit
if (strcmp(p, "quit") == 0)
exit(0);
//
if ((ret = write(memoryfd, p, strlen(p))) < 0) {
printf("write fall!
");
exit(0);
}
printf("reading...
");
sleep(1);
//
if ((ret = read(memoryfd, tmp, sizeof(char))) < 0) {
printf("read fall!
");
exit(0);
}
printf("
Output:%s
", tmp);
}
return 0;
}
gets()関数は安全ではありません...