问题标签 [system-calls]
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.
c - 在 Linux 用户空间进程中,vsyscall 页面的地址是什么?
我想获取 vsyscall 页面的地址以供我自己使用。我这里只有两个想法:更改编译器以在将这些信息提供给 __start 后将其存储在某个已知位置,或者读取 /proc/[pid]/maps。我真的不想阅读 /proc/ 因为那很慢而且没有必要。我也不想进行编译器修改。有没有人有替代方案?有没有我应该知道的符号?
在这一点上,我很想将此功能填充到我作为这项工作的一部分开发的模块中的 ioctl 调用中!
c# - C# 的 SystemParametersInfo 参数定义
我想从 C# 调用 SystemParametersInfo。该函数的第一个参数是大量可能值中的一个,例如 SPI_GETACCESSTIMEOUT,这些值在文档中列出,但似乎没有在任何地方定义。
我可以在网上找到这些东西的实际值,然后用正确的幻数组成一个枚举——这可行,但它不是正确的。我希望能够包含一些对我有用的东西。它们必须在某个地方定义!
我该怎么做才能使这项工作正常进行?
OJ 指向SPI 页面,如果我想将所有内容复制到我的源代码中,这非常棒。但我希望编译器这样做。
我应该只能说:
相反,我需要添加:
...以及所有其余部分。我正在寻找一些命令,它将从它们位于 dll 中的任何位置导入所有这些定义。
php - 从 PHP 脚本运行 PHP 脚本而不阻塞
我正在构建一个蜘蛛,它将遍历各种站点并对其进行数据挖掘。
由于我需要分别获取每一页,这可能需要很长时间(可能是 100 页)。我已经将 set_time_limit 设置为每页 2 分钟,但无论如何 apache 似乎都会在 5 分钟后终止脚本。
这通常不是问题,因为这将从 cron 或类似的没有此时间限制的东西运行。但是,我也希望管理员能够通过 HTTP 接口手动启动获取。
apache 在整个持续时间内保持活动状态并不重要,我将使用 AJAX 触发一次获取并偶尔使用 AJAX 进行检查。
我的问题是如何从 PHP 脚本中开始提取,而不会在调用它的脚本死亡时终止提取。
也许我可以使用 system('script.php &') 但我不确定它是否能解决问题。还有其他想法吗?
python - 如何从 Python 脚本调用可执行文件?
我需要从我的 Python 脚本中执行这个脚本。
可能吗?该脚本生成一些输出,其中包含一些正在写入的文件。如何访问这些文件?我尝试过使用子进程调用功能,但没有成功。
应用程序“bar”还引用了一些库,除了输出之外,它还创建文件“bar.xml”。如何访问这些文件?仅仅通过使用 open()?
谢谢,
编辑:
Python 运行时的错误只是这一行。
process - Linux内核编程:尝试获取vm_area_struct->vm_start使内核崩溃
这是学校的作业,我需要使用系统调用来确定系统上进程的大小。我的代码如下:
当我运行调用此系统调用的用户级程序时,我得到的输出是:
1
vm_start 是 134512640
2
EIP:0073:[<0806e352>] CPU:0未ESP污点:007B:0f7ecf04 EFLAGS:00010246不被污染
EAX:00000000 EBX:0fc587c0 ECX:081fbb58 EDX:00000000
ESI:bf88efe0 EDI:0f482284 EBP:0f7ecf10 DS:007B ES: 007B
081f9bc0:[<08069ae8>] show_regs + 0xb4 /
0xb9 081f9bec:[<080587ac>] SEGV + 0x225 / 0x23d
081f9c8c:[<08058582>] segv_handler + 0x4f / 0x54
081f9cac:[<08067453>] sig_handler_common_skas + 0xb7 / 0xd4
081f9cd4 : [<08064748>] sig_handler+0x34/
0x44 081f9cec: [<080648b5>] handle_signal+0x4c/0x7a
081f9d0c: [<08066227>] hard_handler+0xf/0x14
081f9d1c: [<007762020>]
- 0x77 内核不同步地址 0x0,ip 0x806e352 的模式错误
EIP: 0073:[<400ea0f2>] CPU: 0 未污染 ESP: 007b:bf88ef9c EFLAGS: 00000246 未污染
EAX: ffffffda EBX: 00000000 ECX: bf88efc8 EDX: 080483c8
ESI: 000000000 EDI: bf88:38 DS: Bf BP:7 007B
081f9b28:[<08069ae8>] show_regs + 0xb4 /
0xb9 081f9b54:[<08058a1a>] panic_exit + 0x25 /
0x3F的081f9b68:[<08084f54>] notifier_call_chain + 0×21/
0×46 081f9b88:[<08084fef>] __atomic_notifier_call_chain + 0×17 / 0x19
081f9ba4 :[<08085006>] atomic_notifier_call_chain+0x15/0x17
081f9bc0:[<0807039a>] panic+0x52/0xd8 081f9be0
:
[<080587BA>] SEGV+0X23333DRONTS <080587BA> 88/0888/0888/088/088/088 d.88 d.88
d.88.b
<08067453>] sig_handler_common_skas+0xb7/0xd4
081f9cd4: [<08064748>] sig_handler+0x34/
0x44 081f9cec: [<080648b5>] handle_signal+0x4c/0x7a
081f9d0c: [<08066227>] hard_handler+0xf/0x14
081f9d1c: [<007764202>07
第一个进程(pid = 1)给了我 vm_start 没有任何问题,但是当我尝试访问第二个进程时,内核崩溃了。谁能告诉我出了什么问题,也许还有如何解决它?非常感谢!
(抱歉格式错误....)
编辑:这是在 uml 环境中的 Fedora 2.6 内核中完成的。
python - 循环可执行文件以从 Python 脚本中获取结果
在我的python脚本中,我需要在for循环中调用一个可执行文件,并等待该可执行文件将结果写入“output.xml”。
我如何设法使用 wait() 以及我如何知道我的一个可执行文件何时完成生成结果以获得结果?如何关闭该进程并打开一个新进程以再次调用可执行文件并等待新结果?
我需要等待“bin/bar”的输出来生成“output.xml”,然后从那里读取它的内容。
mysql - libmysqlclient 在 vmsplice() 上挂起
我正在运行一个在 64 位内核和 32 位用户空间兼容模式下使用 libmysqlclient.so.15 的可执行文件。
偶尔,我的程序会挂在 libmysql 中的某些东西上:
我们在 2.6.26-2-amd64 #1 SMP debian 机器上运行。
我不知道它是什么,它偶尔会发生。
求救!!!!
谢谢
linux - 系统调用如何知道包装函数将其参数放在哪里?
我正在尝试在 Linux(RedHat Enterprise 8)中实现一个系统调用,但我对它的工作方式有点困惑。据我了解,我在用户模式下实现了一个包装器,它将系统调用号放在 eax 中,并将参数放在 ebx、ecx、edx 等中,然后调用 int 0x80 来调用适当的系统调用。我的问题是,由于系统调用像常规 C 函数一样编写,它如何知道哪些寄存器包含哪些参数?它是一种惯例,还是有一种机制,如果有,它在哪里以及如何做到这一点?
编辑:这是一个家庭作业。我知道有系统调用宏可以为我做这些事情。
c++ - 将 C++ 代码从 Windows 移植到 Unix:系统调用与函数名冲突
我正在将一些笨拙的 C++ Windows 代码移植到 Linux,它在每个类中使用称为“打开”和“关闭”的函数......非常糟糕的风格,或者?幸运的是,这在 Windows 中不是问题,因为它们的系统调用名称不同。
当我尝试调用系统调用 open() 或 close() 时,我收到一些关于“类调用没有匹配函数:open()”的编译器错误。我无法在整个代码中重命名所有名为“class::open”和“class::close”的函数,而且我必须使用 open() 和 close(),因为我正在使用串行端口。
所以我的问题是:我怎样才能告诉编译器,我的意思是哪个打开?如何在 C++ 中转义或隐藏类的命名空间?
linux - 更改 entry.S 中的 system_call 时出现内核恐慌
我正在尝试实现一个系统调用计数器,因此我在 task_struct 中包含了一个 int 值,并在一个单独的文件中包含了一个递增它的函数。这个函数应该在它实际调用所需的 sys_call 之前从 system_call 调用(我有理由在之前而不是之后调用它)。但是,如果我把它放在 sys_call 之前,那么在编译和启动之后就会出现内核恐慌(“试图杀死 init_idle”),如果我把它放在 sys_call 之后,它就可以工作。有什么区别,我该如何克服?
这是相关代码