首页 > TAG信息列表 > system-calls
调用系统调用时的进程状态?
调用syscall时具有什么进程状态? 我的意思是,不要以为这是一个类似于读取或写入的I / O系统调用… 是进程本身执行内核代码,还是进程被挂起,并且有一个执行系统调用处理程序的“内核线程”(并且知道被称为(当前)的进程)? 我不确定是从执行更改为就绪,还是从执行更改为阻止.解决方法:在某些Linux程序中关闭奇怪的描述符
在散布一些linux守护程序(例如sendmail)时,我注意到其中一些会在开始时在多个描述符(通常从3到255)上调用close().这是故意执行的,还是做其他事情的某种副作用?解决方法:它通常是在使进程成为守护程序的过程中完成的. 所有文件描述符都已关闭,因此长时间运行的守护程序不会不必要地linux-父/子进程关闭文件描述符
如果对父项执行fork()并创建子进程,则子项将关闭从fork继承的fd. 由于文件是独立的,文件会在父文件中保持打开状态吗?什么标准I / O或标准错误?解决方法:无论它们代表文件还是设备(包括标准I / O描述符),如果您在一个进程中关闭,则另一个进程仍然具有有效的描述符. 这很自然.如果子进在真实的Android设备上使用Tcp套接字
我可以使用Tcp套接字连接两个Android设备(不是仿真器),以提供WIFI网络所需要的IP地址吗?我应该通过特定端口进行端口转发吗?是否可以使用系统调用以编程方式打开端口?解决方法:我可以使用Tcp套接字连接两个Android设备(不是仿真器),以提供WIFI网络所需要的IP地址吗? 阅读以下内容:http:/编写新系统调用时可用的功能
对于大学任务,我们必须向Linux内核添加系统调用.我有“你好,世界”没问题.就添加一个更复杂的调用而言,我知道(或至少认为)我不能使用像malloc这样的C函数,但是我想知道我可以使用syscall()来使用其他系统调用吗?解决方法:内核对几乎所有内容都有自己的特定调用.您无权访问系统调用linux-内核级别系统调用fork,vfork的重要性
这个问题已经在这里有了答案: > The difference between fork(), vfork(), exec() and clone() 6个 在使用ltrace跟踪带有fork,vfork …的程序的系统调用时python-使用sqlalchemy和postgres的SSL syscall错误错误文件描述符
所以我有一个守护进程,通过sqlalchemy与Postgres对话.守护程序执行以下操作: while True: oEngine = setup_new_engine() with oEngine.connect() as conn: Logger.debug("connection established") DBSession = sessionmaker(bind=conn)() Loggerlinux-find_task_by_pid()的替代方法
我需要在系统调用中使用给定的pid访问任务.显然,在旧版Linux内核中,函数find_task_by_pid()达到了此目的.似乎只有在新内核(如3.13)中可用的给定pid才能搜索任务的函数是find_task_by_vpid().对于给定的pid,调用此函数会返回与上一个相同的任务吗? (虚拟(本地)PID是什么意思?)如果不如何在Linux上通过系统调用等待按键中断?
当用户在程序中按nasm编写的特殊按键(如F1-12)时,我希望收到中断.我只需要在主要功能开始时等待功能击键.我知道使用BIOS的int 16h(返回扫描代码)是可能的.我如何在Linux下执行此操作?解决方法:所需的代码相当复杂.我最终想出了如何使用原始ioctl在C中检查F1,进行读取和写入的方法.在linux系统调用中查找用户名
我向Linux内核添加了一个系统调用,如下所示: #include <linux/kernel.h> #include <linux/sched.h> #include <linux/list.h> #include <linux/cred.h> #include <asm/uaccess.h> asmlinkage int sys_os_pid_to_uid(int pid, int* puid) { struct task_strlinux-libc源代码中的open()是从哪里链接的?
我基本上需要自定义几个linux系统调用接口(例如sys_open).我非常了解GNU Linker ld –wrap = symbol选项,并使用该逻辑来更改open()libc包装器.尽管这达到了目的,但我真的很想知道libc源代码中的实际实现在哪里. 以下是我的主要怀疑对象(请注意,fcntrl.h仅包含声明) > GLIBC_DIR /正确使用prctl()的方法
prctl的原型是 int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); 在man page中,而在header中则声明为可变函数: extern int prctl (int __option, ...) __THROW; >当我只需要2个参数时,是否必须用5个参数调linux-getaddrinfo()是系统调用吗?
当我发现getaddrinfo()列在“系统调用”或“破产”一章下时,我正在阅读http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#syscalls. 我想检查它是否真的是我的Debian 8 Linux系统上的系统调用.但是我找不到任何证据表明它是系统调用. 例如,我编写了一个程序foo.c. #Linux中writev()系统调用的原子性
我查看了Linux内核4.4.0-57-generic的内核源代码,在writev()源代码中没有看到任何锁定.有什么我想念的吗?我看不到writev()是原子还是线程安全的.解决方法:这里不是内核专家,但是无论如何我都会分享我的观点.随时发现任何错误. 浏览内核(虽然我不希望v4.9如此不同),并尝试跟踪writev在Linux上的哪个库中,系统调用以及该库如何链接到包含系统调用的可执行对象文件?
我知道系统调用不在C标准库中.是否有系统调用所在的库(某种系统库)? 如果有这样的库,该库如何链接到可执行程序?解决方法:根据目标体系结构,系统调用可以几种不同的方式工作,但无论如何,它不是库调用.这是正在运行的用户空间程序调用内核中某些功能的一种方式. 在非常老的系统中,这通为何使用syscall clobber rcx?
这个问题已经在这里有了答案: > Why do x86-64 Linux system calls modify RCX, and what does the value mean? 1个 在书Low-Level Programming: C, Assemlinux-系统调用如何知道包装函数将参数放入何处?
我正在尝试在Linux(RedHat Enterprise 8)中实施syscall,我对其工作方式有些困惑.据我了解,我在用户模式下实现了一个包装器,该包装器将syscall编号放入eax,将参数放在ebx,ecx,edx等中,然后调用int 0x80,后者调用相应的syscall.我的问题是,由于系统调用是像常规C函数一样编写的,因此c-使用ptrace在用户空间中编写程序主管
我将寻找建议/资源来编写一个程序,该程序可以拦截来自程序的系统调用,以监督其对文件系统,网络等的访问. 这样做的目的是编写一个在线判断程序,以便可以在服务器上安全地运行不受信任的代码. 这是在Linux上,我更喜欢编写C或脚本语言(ruby,python等),并且库会很棒! 谢谢.解决方法:这在没有堆栈的情况下在Linux上进行系统调用
在Linux i386上,使用int $0x80 syscall ABI可以很容易地在没有有效用户空间堆栈的情况下执行syscall.另一方面,vdso / vsyscall接口需要访问堆栈.在这方面,其他Linux端口(特别是x86_64)如何?他们有没有堆栈的方式进行系统调用的方法吗?是否有关于每个架构的可用syscall方法的参考?解决防止在POSIX系统上关闭文件描述符
有一个库(libvte,一个终端仿真库),它为pty主/从对使用一对文件描述符.我需要能够从库中“窃取” master fd供我自己使用(以便在极少数情况下实现对ZMODEM的支持,这时我必须通过端子通过网络连接到互联网).但是,有一个问题. 您可以告诉libvte您想要将文件描述符更改为一个新的描述符linux-v2.6.39.4中的文件entry.S在哪里?
我正在使用版本2.6.39.4中的源代码研究Linux中的系统调用. 书籍说系统调用是在arch / i386 / kernel / entry.S中的entry.S中实现的,但我在v2.6.39.4中找不到该文件.那么在我的版本中哪个文件实现了系统调用?与旧有什么不同?解决方法:书中的信息似乎已过时. 您应该在arch / x86 / kerlinux-结合chmod和chgrp的Shell命令
chmod和chgrp是否有一个组合变体,可在一个系统调用中为每个文件设置权限和组?解决方法:没有这样的变体,因为两个操作chmod(2)和chown(2)是由不同的系统调用实现的. 摆脱chmod和chown 由于安全问题,您可能正在寻找chmod和chown的此类变体.在这种情况下,可以使用以下策略: >将模式标志如何在Linux内核中实现clone(2)syscall的另一种形式?
我正在尝试创建另一个版本的clone(2)syscall(在内核空间中)以创建带有一些其他参数的用户进程的克隆.此系统调用将执行与clone(2)完全相同的工作,但我想要从user_space向内核传递一个附加参数.但是,当我看到glibc的code时 似乎每个参数的传递顺序与用户调用clone()的顺序不同 intstatvfs系统调用失败,错误为定义的数据类型,值太大
我的服务器上安装了Red Hat Enterprise Linux Server 6.6(2.6.32-504.el6.x86_64),并且具有以下分区层次结构. Filesystem Size Used Avail Use% Mounted on /dev/sda2 7.9G 1.7G 5.9G 22% / tmpfs 5.4G 8.0K 5.4G 1% /dev/shm /dev/sda8 53Glinux-汇编和系统调用
我在理解组装中更复杂的系统调用时遇到了一些麻烦.我写了一个exec系统调用,效果很好 .bss .text .globl _start _start: #exit(0) system call movl $1, %rax movl $0, %rbx int $0X80 虽然我有一点保证,但还无法找到有关如何将字符串放入寄存器的