Android內核開發 Linux Java編程調用內核模塊設備驅動

本文出處: http://blog.csdn.net/leytton/article/details/52738760
java

本文目的爲Linux系統環境下:一、編寫內核模塊程序並編譯 二、加載內核模塊 三、編寫Java程序調用內核模塊編程

功能爲向內核模塊虛擬設備寫字符串,再從內核模塊虛擬設備讀出字符串長度。oop


一、編譯加載內核模塊測試

見另文《 Android內核開發 Linux C編程調用內核模塊設備驅動》http://blog.csdn.net/leytton/article/details/52738901spa


二、WordCount.java文件.net

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class WordCount {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		if (args.length > 0) {
			if (writeStringToDev(args[0])) {
				System.out.println("寫入成功");
			} else {
				System.out.println("寫入失敗");
				return;
			}
			int result = readWordCountFromDev();
			if (result > -1) {
				System.out.println("字符串長度爲:" + result);
			} else {
				System.out.println("讀取失敗");
				return;
			}
		} else {
			System.out.println("Usage .eg:java WordCount \"hello\"");
		}
	}

	// 向/dev/wordcount設備文件中寫入字符串
	private static boolean writeStringToDev(String str) {
		try {
			// 打開/dev/word_count設備文件
			FileOutputStream fos = new FileOutputStream("/dev/word_count");
			// 寫入字符串
			fos.write(str.getBytes("iso-8859-1"));
			fos.close();
		} catch (Exception e) {
			System.out.println("Error:" + e.getMessage());
			return false;
		}
		return true;
	}

	// 讀取/dev/wordcount設備文件中的字符串長度
	private static int readWordCountFromDev() {
		int word_count = -1;
		byte[] buffer = new byte[4];
		try {
			// 打開/dev/wordcount設備文件
			FileInputStream fis = new FileInputStream("/dev/word_count");
			word_count = fis.read();
			fis.close();
		} catch (Exception e) {
			System.out.println("Error:" + e.getMessage());
			return -1;
		}
		return word_count;
	}

}

三、Linux中編譯並運行

[hadoop@localhost drivers01]$ javac -encoding gbk WordCount.java 
[hadoop@localhost drivers01]$ sudo java WordCount "I love you"
寫入成功
字符串長度爲:10
[hadoop@localhost drivers01]$

四、參考文章code

《使用Android NDK和Java測試Linux驅動》http://blog.csdn.net/nokiaguy/article/details/8671397
blog

相關文章
相關標籤/搜索