system()调用 与 ioctl()调用

Mr. 小萝卜 2010-12-09 12:59:43

本来程序里是用ioctl( )调用的
现在改成system( )调用

研究过ioctl的机制,理解的一般般,但是对于system()调用一无所知

随便讲讲

...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccdxjjxy 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

system()调用是创建一个子进程,执行参数指定的命令
[/Quote]


这个是对的
lu_youyou 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shiniji_hh1126 的回复:]

用户态 想与内核态的设备对话,只能使用ioctl( )调用吗??
有没有别的路可走???
用ioctl的话,我得在2边include同样头文件,里面定义了ioctl的号,只要这2边的头文件中号能对应起来,ioctl就能调到对应的操作,是这样吗??
[/Quote]

用户态与内核态设备交互除了ioctl外,还可以通过系统调用。
每个设备可以当作文件进行read/write等操作。
用ioctl需要制定的号。
无知者无谓 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 laojing123 的回复:]
引用 4 楼 shiniji_hh1126 的回复:
用户态 想与内核态的设备对话,只能使用ioctl( )调用吗??
有没有别的路可走???
用ioctl的话,我得在2边include同样头文件,里面定义了ioctl的号,只要这2边的头文件中号能对应起来,ioctl就能调到对应的操作,是这样吗??


ioctl是驱动中的实现,给用户的接口由VFS完成,内核和应用中的头文件应该一致。……
[/Quote]
不一定,那得看你的驱动是怎么实现的,有的是通过ioctl和用户态交互,也可以通过netlink、proc文件等来完成。这个取决于驱动,用户态只能使用它提供的接口。
井朝天 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shiniji_hh1126 的回复:]
用户态 想与内核态的设备对话,只能使用ioctl( )调用吗??
有没有别的路可走???
用ioctl的话,我得在2边include同样头文件,里面定义了ioctl的号,只要这2边的头文件中号能对应起来,ioctl就能调到对应的操作,是这样吗??
[/Quote]

ioctl是驱动中的实现,给用户的接口由VFS完成,内核和应用中的头文件应该一致。
帅得不敢出门 2010-12-09
  • 打赏
  • 举报
回复
与设备对话,不单只有ioctl的
open read write等。
ioctl号必须是一致的。
Mr. 小萝卜 2010-12-09
  • 打赏
  • 举报
回复
用户态 想与内核态的设备对话,只能使用ioctl( )调用吗??
有没有别的路可走???
用ioctl的话,我得在2边include同样头文件,里面定义了ioctl的号,只要这2边的头文件中号能对应起来,ioctl就能调到对应的操作,是这样吗??
Mr. 小萝卜 2010-12-09
  • 打赏
  • 举报
回复
今天深入研究了一下,使用system()调用,最终还是跑到了ioctl()里



小魔菇 2010-12-09
  • 打赏
  • 举报
回复
system = fork + exec;执行完了进程就over了
justkk 2010-12-09
  • 打赏
  • 举报
回复
system()调用是创建一个子进程,执行参数指定的命令

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧