问题标签 [systems-programming]

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.

0 投票
2 回答
3871 浏览

windows - 在运行时更改进程名称

对于 A.EXE PE 文件,如果程序以测试模式运行,我想将进程名称更改为“A_TEST.exe”。
如果程序以安全模式运行,我想更改为“A_SAFE.exe”

文件名必须相同(A.EXE)。

是否可以?

0 投票
1 回答
725 浏览

posix - 有人看到这个程序有什么问题吗

在没有得到我喜欢这个关于 chroot的问题的答案后,我开始推出自己的解决方案:

有没有人看到其中的任何错误(或者更好的是,知道一个使它变得多余的工具)?

0 投票
4 回答
17733 浏览

c - 僵尸进程

我有一些关于僵尸进程的问题

  • 僵尸进程概念有什么好处?
  • 知道内核为僵尸进程保留(PID,终止状态,资源使用信息)
    “资源使用信息”是什么意思
  • 僵尸的 PPID() = 1 并且它仍然是僵尸,(init 收获僵尸,因为它默认为 wait())
    任何人都可以编写一些 C 代码来制作僵尸,它的父级是 Init?
  • 僵尸可以拒绝释放一些内存锁吗?

提前致谢

0 投票
3 回答
1848 浏览

linux - UNIX 环境中高级编程的工作代码 2ed 最好在 Ubuntu/gcc4 上

我正在学习 Linux 系统编程,并且正在阅读 W. Richard Stevens 和 Stephen A. Rago 的 APUE 2ed 书。

http://www.apuebook.com/上给出的代码不起作用。未定义的定义,未实现的函数(在附录中给出)

谁能指出我为 APUE 2ed 编译的代码,最好是在 Ubuntu/gcc4 上。

0 投票
7 回答
19582 浏览

c++ - 使用 C++ 进行低级系统编程

我使用 C++ 已经有一段时间了,我开始对驱动程序和其他东西等低级系统编程产生兴趣。即使是某种原始操作系统也可能是非常有趣的项目!

我不知道我可以从哪里开始。是否有任何不太具有挑战性的事情我可以开始?关于 C++ 有什么我应该尽量避免性能关键代码中的异常吗?

如果这很重要的话,我目前的操作系统是 Windows 7。

0 投票
2 回答
225 浏览

c - 复制堆栈的一部分并使用 mmap 将其映射到当前进程

我希望我的程序执行以下操作:

  1. 打开一个新文件。
  2. 将包含当前帧指针地址的堆栈(页面对齐)部分复制到文件中。
  3. 将文件的内容映射回与堆栈的原始部分相同范围内的进程地址空间,以便进程将文件用于其堆栈的该部分而不是系统最初拥有的内存区域为堆栈分配给它。

下面是我的代码。我在调用 mmap 时遇到分段错误,特别是 mmap 使用 vsyscall 进行系统调用的地方。(我在 Ubuntu Server (x86-64) 下使用 gcc 4.4.3、glibc 2.11.1。我已经编译并运行了 64 位和 32 位配置,结果相同。

谢谢!

0 投票
2 回答
218 浏览

j - 是否可以用 J 或类似的东西进行系统编程?

只是想知道这是否可能?如果是这样,我想看一些关于它的在线文本 b/c 我用谷歌搜索并找不到任何哈哈,谢谢

0 投票
1 回答
427 浏览

c# - windows登录时的图像捕获

我想知道当用户在 Windows 中成功或不成功地尝试登录时如何从网络摄像头捕获图像。是否有任何API.net 可用于此目的或任何方式来做到这一点。

0 投票
2 回答
3047 浏览

linux - 从父进程读取子进程的 /proc/pid/mem 文件

在下面的程序中,我试图导致以下情况发生:

  1. 进程A为堆栈变量a赋值。
  2. 进程A(父)使用 PID child_pid创建进程B (子) 。
  3. 进程B调用函数func1,传递一个指向 a 的指针
  4. 进程B通过指针改变变量a的值。
  5. 进程B打开它的/proc/self/mem文件,寻找包含a的页面,并打印a的新值。
  6. 进程A(同时)打开/proc/ child_pid /mem,寻找正确的页面,并打印a的新值。

问题是,在第 6 步中,父级只能在/proc/ child_pid /mem中看到a的值,而子级确实可以在其/proc/self/mem中看到新值。为什么会这样?有什么方法可以让父母通过/proc文件系统查看孩子对其地址空间的更改?

该程序产生以下输出。请注意,a(粗体)的值在父母和孩子对/proc/ child_pid /mem文件的读取中是不同的。

在 main:arg.a 的地址:0x7ffffe1964f0
Stack_start:7ffffe196000
arg_ptr->a 的地址:0x7ffffe1964f0
PARENT(pid 20376,child pid 20377)
PARENT:child_offset:4f0
CHILD(pid 20377,parent pid 20376)。
func1:旧值:42
func1:地址:0x7ffffe1964f0
func1:新值:53
PARENT:来自孩子的消息:1
CHILD:child_mem_fd:4
PARENT:child_path:/proc/20377/mem
CHILD:新值53
PARENT:child_mem_fd:7
PARENT :新值42
结束子进程。

0 投票
2 回答
1575 浏览

c - RegisterClassEx 函数返回的 ATOM 有什么用?

我正在阅读RegisterClassEx函数的文档,发现该函数的返回类型是ATOM.

在使用创建窗口时,CreateWindowEx我们可以在 lpClassName 中传递类名或 ATOM 类。

那么将 ATOM 传递给 classname 有什么意义吗?还是只是另一种方式?

谢谢。