- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
谁能解释一下这一行到底是做什么的:
socketcall(7,255);
我知道该命令正在系统上打开一个端口,但我不明白该参数。手册页说
int socketcall(int call, unsigned long *args);
DESCRIPTION
socketcall() is a common kernel entry point for the socket system calls. call determines which socket function to invoke. args points to a block con-
taining the actual arguments, which are passed through to the appropriate call.
User programs should call the appropriate functions by their usual names. Only standard library implementors and kernel hackers need to know about
socketcall().
好的,调用 7 是 sys_getpeername,但是如果我看一下手册页:
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
DESCRIPTION
getpeername() returns the address of the peer connected to the socket sockfd, in the buffer pointed to by addr. The addrlen argument should be initial-
ized to indicate the amount of space pointed to by addr. On return it contains the actual size of the name returned (in bytes). The name is truncated
if the buffer provided is too small.
The returned address is truncated if the buffer provided is too small; in this case, addrlen will return a value greater than was supplied to the call.
我真的不明白。该函数需要 3 个参数。函数是如何获取参数的? 255是什么意思?有谁知道该函数如何打开端口?
最佳答案
尽管 Linux 有一个通常称为 socketcall
的系统调用,但 C 库不会公开任何具有该名称的 C 函数。通常应使用标准包装函数,例如 socket()
和 getpeername()
,这将最终调用系统调用,但如果由于某种原因需要直接调用系统调用,则可以使用 syscall(SYS_socketcall, call, args)
或使用汇编来完成。
在这种情况下,应用程序或其使用的库(标准 C 库除外)很可能定义了自己的函数,称为 socketcall()
,该函数与系统调用无关。您应该检查该函数或其文档以了解它的作用。
关于linux - 尝试理解 sys_socketcall 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050689/
谁能解释一下这一行到底是做什么的: socketcall(7,255); 我知道该命令正在系统上打开一个端口,但我不明白该参数。手册页说 int socketcall(int call, unsign
我有一个在 UART 上接收 8 字节数据的函数,我正在使用其中一个数据字节,读取该数据字节并调用一个函数来调制我将要使用的 MP3 编解码器的音量使用。设置音量的 MP3 编解码器函数有点奇怪,它将
我正在尝试验证 C 语言中的 ISBN 编号,但是当我运行该程序时,出现以下错误:不允许的系统调用:SYS_socketcall 这是计算机科学类(class)的家庭作业。我已经完成了所有的工作,所以
我正在想办法解决这个问题 Sum n largest integers in an array of integers where every integer is between 0 and 9 i
我是一名优秀的程序员,十分优秀!