syscall 命令

用途

执行指定的子例程调用。

语法

syscall [ -n ] 名称 [ Argument1 ... ArgumentN ] [ ; Name [ Argument1 ... ArgumentN ] ] ...

描述

syscall 命令执行系统调用接口程序,该程序执行 Name 参数指定的子例程调用。 如果您指定了 -n 标志,那么 syscall 命令会执行调用 n 次。 由 Argument 参数指定的变量不经过误差检测就传递到子例程。 Argument 参数可以通过下列格式表示:

描述
0x nnn 十六进制常量 nnn
0 nnn 八进制常量 nnn
nnn 十进制常量 nnn
+nnn 十进制常量 nnn
- nnn 十进制常量 nnn
"字符串 字符串“string”。
'字符串 字符串“string”。
\字符串 字符串“string”。
#字符串 字符串“string”的长度。
&&N 子例程第 n 个变量的地址。 (n=0 即为子例程名。)
&N 内部 10KB 缓冲区的第 n 个字节的地址。
$n n 个子例程的结果。 ( n=0 为第一个子例程。)
字符串 任何其他文字字符串。

syscall 命令对于 未知子例程和返回值为 -1 的子例程会显示出一条消息并且退出。

注: syscall 命令将 sleep 子例程理解为特例子例程。

标志

描述
-n 指定 syscall 命令 执行指定的子例程的次数。
; 分离 syscall 命令的同一调用发出的多个子例程(最多达 20 个)。

示例

要模拟 C 程序段:

output=open("x", 401, 0755);
write(output, "hello", strlen("hello"));

请输入:

syscall open x 401 0755 \; write \$0 hello \#hello

注: 必须对特殊 shell 字符进行转义。

文件

描述
/usr/bin/syscall 包含 syscall 命令。