我认为“交互式”你的意思是通过irb.
像 Ruby 这样的高级语言将为大多数内核系统调用提供不同厚度的包装器。
有时,这些包装纸会很薄,例如sysread()和syswrite()。它们或多或少分别相当于read(2)和write(2)。
其他系统调用将隐藏在较厚的层后面,例如套接字I/O 内容。我不知道调用是否UNIXSocket.recv()准确地算作“调用系统调用”。在某种程度上,这正是所发生的情况,但谁知道 Ruby 和 C 代码在您和实际的系统调用之间存在多少障碍。
还有一些系统调用根本不在标准 Ruby API 中,很可能是因为它们没有多大意义,例如mmap(2). 该系统调用都是关于内存的原始指针,您首先选择使用 Ruby 这样的语言来避免这种情况。正好有一个第三方 Ruby mmap 模块,但它实际上不会为您提供可以从 C 中利用的所有功能。
上面评论中指出的接口syscall()Mat是一个类似的故事:理论上,它可以让你调用内核中的任何系统调用。但是,如果您没有能力处理指针、在内存中精确布置结构数据等,那么您进行有用调用的能力将非常有限。
如果你想玩系统调用,就学C吧。没有捷径。
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |