问题标签 [sysv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
yocto - Yocto:INITSCRIPT_PARAMS 无法按预期工作
我正在使用 yocto Krogoth(2.1),这在我的 startup_1.0.bb 中不起作用:
在bitbake core-image-minimal之后, startup.sh被复制到/etc/init.d但未链接到/etc/rcS.d/S98startup.sh
我搜索了解决方案,甚至检查了一些在 poky/meta 中包含 INITSCRIPT_PARAMS 的 bb 文件,但没有找到有用的信息。
这是我的startup_1.0.bb
更新:
这是关于名称匹配和硬编码文件名。我已经按照 Fabian Knapp 的提示修复了它。
linux - rc.d 脚本默认给定一个“开始”参数?
我的目标是制作一个 bash 脚本服务,该服务在运行级别为 5 时创建一个文件,并在运行级别为 3 时删除该文件。
我遇到的问题是当我到达运行级别 3 时。我得到:
为什么它开始争论而我没有通过任何争论。当前的 lvl 是:3,参数数量是:1 我在第 10 行。命令是启动
函数 start 用于创建文件,函数 stop 用于删除文件,它们
工作正常如果我删除参数数量的测试条件并让脚本在文件处于 lvl 时删除文件,我可以使脚本正常工作3
但是它告诉我参数的数量是 1 并且它开始的事情并没有进入我的脑海。我已经做了很多研究,但没有找到任何解决方案。
c - C 编译器是否保证两个八字节字段结构将在 SysV x64 上作为 INTEGER 传递?
特别是在 SysV x86-64 ABI的上下文中
如果我有一个只有两个字段的结构,例如:
我将它传递给一个定义如下的函数:
ABI 似乎说每个八字节字段都应该传递INTEGER
给函数,因此rdi == foo
and rsi == bar
。同样,在返回时我们应该能够使用rax
and rdx
,因为我们不需要在rdi
. Ifexample_function
被简单地定义为:
一个有效的程序集实现,忽略序言和结尾,将是:
可以想象,一个精神上有缺陷的编译器可以用填充填充结构NO_CLASS
并以某种方式使该程序集无效。我想知道它是否写在必须以这种方式处理只有两个八字节字段的结构的任何地方。
我的问题的更大背景是我正在编写一个简单的 C11 任务切换器以供我自己启迪。我主要基于 boost.context ,这正是 boost 传递两个字段结构的方式。我想知道它是否在所有情况下都是犹太洁食,或者 boost 是否有点作弊。
c++ - 在 Win64 上的 sysv abi 函数中使用 va_start?
我正在尝试实现一个声明为 sysv_abi 的可变参数函数,所以我必须在这个函数中使用 va_start,但没有找到方法。
我在Win64上编译代码,使用vs2017,编译器是clang-cl。目标是 x86_64 可执行文件(当然是 Windows 上的 PE 文件)。
两者都不会编译,我得到:
error : 'va_start' used in System V ABI function
我该如何处理?
client-server - 使用共享内存在本地实现服务器
共享内存(可能)是可用的最快的 IPC 方法。是否有任何公认的设计模式可以通过共享内存实现本地客户端/服务器通信?更具体地说,请求/响应周期。
场景如下:
- 客户端发出请求以获取或设置服务器中的某些数据
- 多个客户端可以同时执行此操作
- 关于如何联系服务器有一个众所周知的位置
- 服务器使用共享内存回答这些请求(例如转储大型数据结构)
- 客户“断开连接”
最受赞赏的答案是使用标准共享内存接口,例如 SysV 或 POSIX。
c - 我在 XV6 中杀死进程“A”,“A”的子进程会发生什么
在正常的一天,当一个进程被杀死时,它的所有子进程都必须附加到“init”进程(所有进程的曾祖父)。奇怪的是,XV6 似乎没有这样做。下面是 XV6 中 proc.c 文件中 'kill' 函数的代码
为什么没有从进程表中删除被杀死的进程?
为什么它的孩子不被“init”收养?
看在上帝的份上,为什么被杀死的进程又变成 RUNNABLE 了?
c++ - 在qt中使用本机键附加内存时“无法设置键锁定”
我正在尝试学习如何在 Qt 和非 Qt 应用程序之间共享内存,同时拥有两者的读写访问权限。现在我正在尝试使用本机密钥在 Qt 中创建并附加已创建的内存。虽然程序可以成功创建共享内存段,但在下次启动时无法访问它。我怎样才能解决这个问题?有没有办法仅使用本机密钥附加共享内存段?
首次启动:按预期工作,设置 nativeKey 时重置密钥。
第二次启动:尝试创建按预期抛出错误,尝试分离也会按预期抛出错误(因为它未附加),但在尝试附加内存时出现另一个意外错误。
错误 3(来自 Qt 文档):
我不知道我的 nativeKey 出了什么问题。
linux - 在 SysV Centos6 中使用环境变量
我在SysV中有一个作为服务安装的 Spring Boot 应用程序,因此我在 /etc/init.d/myapp 中创建了一个指向 /home/myuser/app.jar 的符号链接。
然后我以这种方式启动我的应用程序:
在我的 application.properties 中,我需要一个环境变量,请参阅:
我总是export APP_VERSION=1
在启动服务之前执行,但 ${APP_VERSION} 总是为空。然后我尝试以这种方式手动执行:
一切正常,环境变量按照我的预期配置。
任何提示如何在 SysV 中使用 Spring Boot 服务中的环境变量?
c - 在两个终端上运行消息队列的问题
我正在尝试运行两个进程,它们基本上是使用消息队列(SYS V)发送和接收消息。虽然我可以通过将接收器保持在后台来在同一个终端选项卡上运行两个进程
和前台的发件人。
这工作正常,但导致我来自发送者和接收者的所有打印都显示在同一个选项卡上。
如果我尝试在一个终端选项卡上运行接收器并在另一个终端选项卡上运行发送器,则进程无法正常工作,它们无法识别系统上存在的消息队列。
我不确定是终端问题还是我的程序问题,我使用的是 MobaXterm 终端。
在下面添加了代码,我是否错过了我想知道的两个不同终端上正在运行的进程。
接收器.c
发件人.c
systemd - 如何在 ZFS 挂载后正确覆盖生成的 systemd 单元文件以启动
我正在使用使用 systemd 的 Ubuntu 18.04.4 LTS,但与此版本的 Ubuntu 打包的 squid 包配置为通过 init.d 启动。systemctl start squid.service
如果我在系统启动后手动启动它,它就会启动并运行。
但是,我使用 ZFS 挂载点(“/media”)来存储缓存数据,并且在引导过程中,squid 在此挂载点处于活动状态之前启动。因此,我收到错误“无法验证交换目录之一”。的完整输出systemctl status squid
在这里
我想告诉 systemd 等到 media.mount 以尽可能微创的方式完成之后(例如,不修改软件包维护的 /etc/init.d/squid 文件)。为此,我创建了/etc/systemd/system/squid.service.d/override.conf
这样的文件:
但是鱿鱼还是起步太早了。
我想做的事可能吗?还是我必须硬着头皮定义一个本机 /etc/systemd/system/squid.service 文件并删除 /etc/init.d/squid 初始化脚本?