linux系统下的ioctl函数 转
我这里说的ioctl函数是在驱动程式里的,因为我不知道更有没有别的场合用到了ioctl,
所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混
了,这几天才弄明白他,于是在这里清理一下头脑。
一、 什么是ioctl。
ioctl是设备驱动程式中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就
是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。他的调用个数
如下:
int ioctl(int fd, ind cmd, …);
其中fd就是用户程式打开设备时使用open函数返回的文件标示符,cmd就是用户程式对设
备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和
cmd的意义相关的。
ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程式提供了对ioctl的支
持,用户就能在用户程式中使用ioctl函数控制设备的I/O通道。
二、 ioctl的必要性
如果不用ioctl的话,也能实现对设备I/O通道的控制,但那就是蛮拧了。例如,我们可
以在驱动程式中实现write的时候检查一下是否有特别约定的数据流通过,如果有的话,
那么后面就跟着控制命令(一般在socket编程中常常这样做)。不过如果这样做的话,会
导致代码分工不明,程式结构混乱,程式员自己也会头昏眼花的。
所以,我们就使用ioctl来实现控制的功能。要记住,用户程式所作的只是通过命令码告
诉驱动程式他想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程式要
做的事情。
三、 ioctl怎么实现
这是个非常麻烦的问题,我是能省则省。要说清晰他,没有四五千字是不行的,所以我这
相关文档:
现在嵌入式也玩多核了。
利用./mpstat -P ALL 1 100 可以来查看cpu的使用情况。
这个是转的一个例子:
在多CPU的趋势越来越大了. 有时候为了更好地操作机器, 需要将某个进程绑定到具体的CPU上去. 下面给出了一个进程绑定到具体的CPU上去的一个例子.
view plaincopy to clipboardprint?
···&midd ......
2.1.2 是否通用
有些单片机厂家也给客户提供了大量的驱动程序,比如USB
HOST驱动程序,这可以让客户很容易就可以在它的上面编写程序读写U盘。但是客户写的这些程序,只能在这种芯片、这个驱动程序上使用;更换另一种芯片
后,即使芯片公司也提供了驱动程序,但是接口绝对不一样,客户又得重新编写应用程序。
基于操作 ......
PHP在运行的时候,直接kill掉,有肯能造成数据的丢失。幸好php模块,有针对signal的处理。
处理方式,首先检查有没有安装 PCNTL 模块
然后可以在一个包含文件中,添加以下代码
global $exitFlag;
$exitFlag = false;
// 增加linux信号量处理
if (DIRECTORY_SEPARATOR != '\\') {
pcntl_signal(SI ......
当两台LINUX主机之间要互传文件时可使用SCP命令来实现
复制文件:
(1)将本地文件拷贝到远程
scp 文件名 --用户名@计算机IP或者计算机名称:远程路径
(2)从远程将文件拷回本地
scp --用户名@计算机IP或者计算机名称:文件名 本地路径
复制目录:
(1)将本地目录拷贝到远程
scp -r 目录名 用户名@计 ......