system-calls相关内容

为什么管道的容量有限?

我听说管道需要有有限的容量.但我不明白为什么.如果进程无限制地写入管道会发生什么? 解决方案 这是因为缓冲.管道不是“神奇的",管道并不能确保所有进程都以锁步方式处理每个单独的字节或字符.相反,管道缓冲进程间输出,然后传递缓冲区.这个缓冲区大小限制就是你所指的.在许多 Linux 发行版和 macOS 中,缓冲区大小为 64KiB. 想象一下,有一个进程每秒向 stdout 输出 1 ..
发布时间:2021-09-04 18:42:10 服务器开发

ARM-OABI 上 syscall() 的实现.什么是“svc #0x900071"?

我了解到系统调用号是作为 ARM OABI(旧应用程序二进制接口)上的“svc(或 swi)"指令的直接操作数传递的.立即数操作数为“0x900000+(系统调用次数)" 例如,发出EXIT系统调用如下. svc #0x900001 @ sys_exit 我对 syscall() 函数的实现感到好奇,因为 sycall() 将系统调用号作为其参数.我猜 syscall() 的二进制代码不能轻易 ..
发布时间:2021-09-04 18:42:08 服务器开发

是否可以在 iOS 上进行系统调用?

是否可以进行系统调用,例如执行 ls -la,并在您的应用中使用结果? 解决方案 通常,当有人说系统调用时,他们的意思是通过定义的入口点之一调用内核.虽然它在 iPhone 上在技术上是可行的,但你总是最好通过 libSystem 垫片,因为调用接口可能不稳定(例如它不在 Mac OS X 上).如果你这样做,我怀疑 Apple 会喜欢它,但我怀疑没有人真正考虑过它,他们也不太可能注意到. ..
发布时间:2021-09-04 18:42:04 移动开发

64 位 Windows 子系统 Linux 上的 32 位系统调用或可执行文件?或者一个工作的 64 位 Hello World?

我试图学习 NASM 并从一个 helloworld 程序开始.本教程本身是 Linux 上的 32 位 NASM. 我复制并粘贴创建的 helloworld.asm(使用 int 0x80 32 位系统调用)并输入命令... nasm -f elf helloworld.asmld -m elf_i386 helloworld.o -o helloworld 这两个看起来不错,但是运行 ..

为什么我的信号处理程序只执行一次?

我正在研究 UNIX 和 C++ 中的信号处理,但遇到了这个问题.我正在尝试编写一个计数到 10 的程序,每秒一个数字,当用户尝试用 SIGINT(如 CTRL+C)中断它时,它会打印一条消息,告诉它无论如何都会继续计数. 到目前为止,我得到了这个: #include #include #include 使用命名空间标准;sig_atomic_t they_want_to_interrup ..
发布时间:2021-09-04 18:41:58 服务器开发

使用 ptrace 提取系统调用名称和参数

我正在处理一项任务,其中我必须使用 ptrace 实现类似 strace 的功能.到目前为止,我已经找到了如何像这样提取系统调用号和返回值: //在父进程中struct user_regs_struct regs;ptrace( PTRACE_GETREGS, child_pid, 0, ®s );//child_pid 是执行所需程序的子进程的pid//或系统调用作为命令行参数传递sys ..
发布时间:2021-09-04 18:41:55 服务器开发

EOF 是否设置错误号?

我总是为系统调用的返回值而苦恼——它们太不一致了!通常我会检查它们是否为 NULL 或 -1,然后调用 perror.但是,对于 fgets,手册页说: gets() 和 fgets() 成功时返回 s,错误时返回 NULL 或在没有字符的情况下出现文件结尾已阅读. 这意味着返回值 NULL 不一定是错误 - 它也可以是 EOF.到达文件末尾时是否设置了 errno?在这种情况下,我还 ..
发布时间:2021-09-04 18:41:51 服务器开发

来自 bash 脚本的操作系统系统调用

是否可以从 shell 脚本调用 os 系统调用,如 open、close 等?我试过谷歌搜索,但它把我带到了使用“system()"命令的错误方向.有人可以帮忙吗? 解决方案 许多系统调用都可以访问,但只能通过本机 shell 机制访问,而不能直接指定确切的参数.例如: exec 4>outfile 调用: open("outfile", O_WRONLY|O_CREAT|O_AP ..
发布时间:2021-09-04 18:41:48 其他开发

Android NDK 是否支持大多数 UNIX 系统调用?

我正在尝试修复并移植一个用 C 编写的旧项目以在 Android 上运行.本项目使用系统调用,例如stat(file, inode)和system(command). Android NDK 是否完全支持这些功能?还是我最好用 Java 重写整个项目? 解决方案 是的,您可以在 Android NDK 中使用系统调用和 libc 函数. https://github.com/a ..
发布时间:2021-09-04 18:41:41 服务器开发

在 Visual Basic.NET 中获取睡眠/休眠和恢复/唤醒事件

我有与一些外部服务器通信的 VB.NET 应用程序(通过 Intranet 维护登录会话),我想监听睡眠/休眠事件,这样当它发生时,我想在计算机运行之前注销现有的会话系统睡觉,而我的应用程序将继续在后台运行但不会做任何事情. 反之亦然,当计算机从休眠状态恢复或从睡眠中醒来时,我想立即登录服务器. 如何获取这些事件并执行我的代码?我相信这与我应该在 VB 中使用的 Win32 API 有 ..
发布时间:2021-09-04 18:41:39 其他开发

c 和 LD_PRELOAD.拦截了 open 和 open64 调用,但未拦截 stat64

我做了一个小的共享库,试图拦截 open、open64、stat 和 stat64 系统调用.当我导出LD_PRELOAD并运行oracle的sqlplus时,可以看到open和open64调用的痕迹,但是没有stat和stat64调用的痕迹.共享库是一个单独的 c 文件,其中包含 sys 调用的所有定义.为什么会发生某些系统调用被拦截而其他系统调用没有被拦截的情况?感谢您的帮助. 解决方案 ..
发布时间:2021-09-04 18:41:36 其他开发

Windows 上的系统调用

我只是想问一下,我知道 Linux 中的标准系统调用是通过指向中断向量表的 int 指令完成的.我认为这在 Windows 上是类似的.但是,您如何调用某些更高级别的特定系统例程?比如你怎么告诉Windows创建一个窗口?我知道这是由 dll 中的代码处理的,但是在汇编指令级别实际发生了什么?dll中的例程是否通过int指令调用软件中断,或者有什么不同的方法来处理这个问题?谢谢. 解决方案 ..
发布时间:2021-09-04 18:41:33 其他开发

从 Windows 移植到 Linux.汇编命令翻译

我最近开始学习从 Windows 移植到 Linux.我一直在将程序从 Intel 语法转换为 AT&T 语法,并将其从 x32 转换为 x64.而且由于我对汇编程序特别是 AT&T 来说是新手,所以我在移植时遇到了一些麻烦.顺便提一下:我故意不使用 .intel_syntax 指令. 所以我不得不翻译这些命令: RTLWriteIntegerBuffer: TIMES 3 DB 0x90 ..
发布时间:2021-09-04 18:41:30 其他开发

execlp() 系统调用错误输出

exec() 系统调用的这个非常简单的例子.在这里,我试图调用 execlp() 两次.但是,我没有得到例外输出.它仅显示当前目录下第一次调用的输出. #include #include int main() {int ret1,ret2;ret1 = execlp( "pwd", "pwd", (char *) 0);ret2 = execlp( "date", "date", (char * ..
发布时间:2021-09-04 18:41:27 其他开发

C/Unix 使用系统调用和 printf 时的奇怪行为

我是一个新手,试图真正了解系统编程.在下面的程序中,我正在读取一个名为“temp1"的文件(包含 1 2 3 4)并将其内容打印到标准输出.但是,我还想检查 open 返回的文件描述符的值.如果我在第 5 行的 printf 调用中包含 '\n',则输出首先打印值 filep,然后打印文件的内容.但是如果我删除换行符,文件的内容会先打印,然后是 filep 的值.为什么会发生这种情况? int ..
发布时间:2021-09-04 18:41:23 服务器开发

strace 是如何工作的?

它可以跟踪所有使用的系统调用. 但是 sys_call 与普通调用有什么不同?? 解决方案 正如 Matthew 所说,strace 使用 ptrace(2) 系统调用来发挥它的魔力.ptrace 用于实现调试器和其他需要检查另一个程序正在做什么的工具.本质上,strace 将调用 ptrace 并附加到目标进程. 每当目标进程进行系统调用时,它就会停止,并且会通知strace ..
发布时间:2021-09-04 18:41:19 其他开发

从 python 调用非 python 程序?

我目前正在努力从 python 脚本调用非 python 程序. 我有大约 1000 个文件,当通过这个 C++ 程序时将生成大约 1000 个输出.每个输出文件必须有一个不同的名称. 我想运行的命令是这样的: program_name -input -output -o1 -o2 -o3 迄今为止我已经尝试过: 导入操作系统cwd = os.getcwd()文件 = os.li ..
发布时间:2021-09-04 18:41:11 Python

如何检查errno的值?

我正在使用系统调用,如果它失败,我需要为不同的 errnos 做不同的事情. 我需要编写如下所示的代码: int res;res = systemCall();如果 (res == -1){如果(错误号 == ENOMSG){做点什么();}别的{doSomethingElse();}} perror 没有帮助,因为它只打印值. 至于 strerro - 如果它是我需要的,我不知道 ..
发布时间:2021-09-04 18:41:05 其他开发