- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在我的程序中设置一些本地 sysctl 参数,我按照此处给出的说明进行操作:http://www.linux.it/~rubini/docs/sysctl/
例如,这是我为 /proc/sys/net/ipv6/conf/tun0/accept_ra
设置值的操作。我刚刚在这次调用之前配置了我的 tun0
接口(interface)。 (我验证了我的接口(interface)已启动并且我也能够分配 IP 地址)
int path_len = 5;
int tun0_accept_ra_path[] = { CTL_NET,
NET_IPV6,
NET_IPV6_CONF,
ifr6.ifr6_ifindex, // This ifindex comes from an interface configured above
NET_IPV6_ACCEPT_RA };
int tun0_accept_ra_value = 0;
if (sysctl(tun0_accept_ra_path,
path_len,
NULL,
0,
&tun0_accept_ra_value,
sizeof(tun0_accept_ra_value)) < 0) {
printf("set sysctl 'accept_ra' failed. errno: %d\n", errno);
}
我得到:set sysctl 'accept_ra' 失败。 errno: 38 函数未实现
有什么想法是错误的吗?我以 sudo 身份运行,所以我认为我不应该有访问权限问题。
我在树莓派上运行 Debian GNU/Linux 7.0 (wheezy)。
最佳答案
您使用的教程太旧了!如果你想要这个系统调用的引用,你应该查看这个链接:http://man7.org/linux/man-pages/man2/sysctl.2.html
您收到 SIGSYS 错误,因为 sysctl 不存在。该系统的正确名称是 *_syscall* 并且 glibc 不提供包装器,因为不应调用此系统调用(它将从下一个 Linux 版本中删除)。您可以使用 /proc 界面获得相同的结果。
如果你想保留你的解决方案,你应该更改代码如下(我没有测试过,抱歉):
#include <sys/syscall.h>
int path_len = 5;
int tun0_accept_ra_path[] = { CTL_NET,
NET_IPV6,
NET_IPV6_CONF,
ifr6.ifr6_ifindex,
NET_IPV6_ACCEPT_RA };
int tun0_accept_ra_value = 0;
if (syscall(__NR_sysctl,
tun0_accept_ra_path,
path_len,
NULL,
0,
&tun0_accept_ra_value,
sizeof(tun0_accept_ra_value)) < 0) {
printf("set sysctl 'accept_ra' failed. errno: %d\n", errno);
}
更好的解决方案可能是:
int tun0_accept_ra_value = 0;
if ((fd=open("/proc/sys/net/ipv6/conf/tun0/accept_ra", O_RDWR)) < 0)
perror("OPEN");
if (write (fd, &tun0_accept_ra_value, sizeof(int)) < 0)
perror("WRITE");
close(fd);
希望对您有所帮助。
关于c - errno: 38 (Function not implemented) 在调用更改 sysctl 值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845152/
我正在尝试制作一个读取系统信息(在 MacOS 上)的应用程序,并且我已经能够像这样读取 sysctl STRINGS: func cpu() -> String { var size =
我查看了手册页和文档,但它们只讨论了命令行调用。我说的是 C 函数。关于它的两个问题: C 中 sysctl() 的参数是什么? (我只想要一个将军描述每个参数是什么以及它的用途) sysctl()
考虑这段代码: int procmon_state = 0; static struct ctl_table_header *procmon_table_header; static ctl_tabl
Scanario:我有一个容器镜像,需要使用net.core.somaxconn> default_value运行。我正在使用Kubernetes在GCE中部署和运行。 我的集群中的节点(vms)配置
我需要一种方法来检索 Mac 上所有用户的所有正在运行的进程(使用 Cocoa)。我找到了一个使用 sysctl 检索进程的实现,但我还需要运行用户。这是我获取进程列表的截图,但是有没有办法修改它以包
在我的应用程序中,我需要在 Android 中编辑 sysctl 设置。对于 example,我见过很少的应用程序可以做到这一点但我不知道他们如何以编程方式执行此操作,是否有任何想法如何执行此操作?
在 4.10.0-38-generic 版本中,ctl_table 结构中没有 ctl_name 字段我找到了教程 https://www.google.com/url?sa=t&rct=j&q=&e
我有以下代码 import sys from ctypes import * from ctypes.util import find_library libc = cdll.LoadLibrary(
我的实际限制是 1024: $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d
我在 docker-compose 文件中有一个 sysctls 设置,但据我了解,此指令在版本 3 中被忽略: sysctls: - net.core.somaxconn = 655
我正在尝试在 Kubernetes Kind 集群中部署一个容器。我尝试部署的容器需要设置几个 sysctls 标志。 部署失败 forbidden sysctl: "kernel.msgmnb" n
我正在尝试从内核模块访问 tcp_input.c 中定义的 tcp_pacing_ss_ratio。可以在用户空间使用 sysctl 命令修改该变量。但是,它不会导出,也不能直接从模块中引用。 从内核
为什么我们要在Linux中配置hugepage值? 我们什么时候配置hugepage值以及如何计算hugepage值? 最佳答案 当需要在 RAM 中连续(按顺序)分配大内存页时,通常会配置大页值。
要在内核模式和用户空间进行通信,我使用 this C program .我正在使用以下 Makefile 创建要加载的 .ko 文件。 bj-m := sysctl_test.o KDIR
我正在运行 x86_64 RedHat 5.3(内核 2.6.18)并在尝试设置 UDP 缓冲区的上下文中专门查看来自 sysctl -a 的 net.core.rmem_max。接收器应用程序有时会
我有一个剧本,其中有几个任务将值设置为 sysctl。我如何使用 sysctl 模块通过一个任务设置所有值,而不是为每个设置设置一个任务? 剧本片段: - name: Set tcp_keepaliv
14 "Mojave"在我的 macbook 上,我正在尝试增加 fs.inotify.max_user_watches值在 /etc/sysctl.conf (解决另一个问题)。为了结束这个仪式,我
Nginx 充当广告服务器的反向代理,每分钟接收 2 万个请求。响应发生在从广告服务器到 nginx 的 100 毫秒内 在配置为的虚拟机上运行 128GB 内存 4 个虚拟 CPU 100GB 硬盘
我需要更新 /etc/sysctl.conf,但如果更改,我需要运行 systemctl -p --system。 如何在我的剧本中实现这一目标? 最佳答案 您可以通过使用处理程序或注册任务并有条件地
我正在尝试制作我的第一个 dockerfile(我是新手),我需要系统运行命令 sysctl -w kernel.randomize_va_space=0 (它是一个实验室环境。),但我收到错误: s
我是一名优秀的程序员,十分优秀!