Memoryドライバ-テストプログラム

1551 ワード

授業実践4:

「実践」参照
3
」のテストプログラム、作成
memory-26.c
のテストプログラム
test-memory-26.c
、マルチスレッドを使用する必要はありません.テストには、データの書き込みと読み取りが含まれます.
,
のように

Linux
設備駆動開発入門
(
中国語版
).
pdf

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()関数は安全ではありません...