草庐IT

sys_read

全部标签

c - 信号中断 read()

我有一个线程不断地读取串行端口的数据。如果主程序收到SIGINT,它会在串行端口线程上调用g_thread_join()。但是,由于读取被阻塞,串行端口线程不会返回并且程序会停止,直到我在串行线上获得一个字节然后它可以退出。有没有办法将SIGINT传递给read(),以便在主线程需要时强制返回? 最佳答案 要让read()返回EINTR,请在的成员sa_flags中取消设置SA_RESTARTstructsigaction传递到对sigaction()的调用中在为SIGINT安装信号处理程序时。另一种方法是完全避免阻塞read()。

linux - UNIX/Linux IPC : Reading from a pipe. 如何在运行时知道数据的长度?

我有一个子进程,它生成一些可变长度的输出,然后使用半双工管道将其发送给父进程。在父级中,如何使用read()函数?由于每次数据的长度可能不同,我如何在运行时知道数据的大小以对缓冲区执行任何malloc()?fstat()函数可以用于管道文件描述符吗?我知道read()函数将读取指定数量的字节,但如果在读取请求的字节之前到达文件末尾(不是EOF字符),它将返回0。我专门运行带有2.6.27-9内核的UbuntuGNU/Linux。RichardStevens在UNIX环境中的高级编程中的所有示例都在写入管道时指定了数据的长度,或者依赖于fgets()stdio.h函数。因为我关心速度,所

linux - 来自 Assembly 的 sys_execve 系统调用

asm_execve.s:.section.datafile_to_run:.ascii"/bin/sh".section.text.globlmainmain:pushl%ebpmovl%esp,%ebpsubl$0x8,%esp#arrayoftwopointers.array[0]=file_to_runarray[1]=0movlfile_to_run,%edimovl%edi,-0x4(%ebp)movl$0,-0x8(%ebp)movl$11,%eax#sys_execvemovlfile_to_run,%ebx#filetoexecuteleal-4(%ebp),%ecx

c++ - 优化我的 read() 循环 C(两个循环合二为一)

我需要读取文件并将它们存储在mainbuff和mainbuff2中。我应该只使用像open()、read()、write()等系统调用我不想把它们存储在堆栈中,如果它会很大怎么办?堆分配更好。此代码有效:...charcharbuf;char*mainbuff1=malloc(100);char*mainbuff2=malloc(100);while(read(file1,&charbuf,1)!=0)mainbuff1[len++]=charbuf;while(read(file2,&charbuf,1)!=0)mainbuff2[len2++]=charbuf;...但是mainb

c - 如何在linux内核中选择 "sys'和 "proc"文件

据我所知,在Linux文件系统中,为了用户空间和内核空间之间的信息通信,使用了两种虚拟文件系统。1)Proc文件系统http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html2)sysfs文件系统https://en.wikipedia.org/wiki/Sysfs在linux内核代码中,我看到一些子系统使用proc文件来执行这样的用户空间-内核空间通信,而一些系统使用sysfs文件来实现同样的问题。所以我只想知道,如果我要编写新的linux内核模块或驱动程序,那么如何选择虚拟文件?什么时候应该使用sysfs什么时

linux - RCHAR 是否包含 READ_BYTES (proc/<pid>/io)?

我读了proc//io测量SQL查询的IO事件,其中是数据库服务器的PID。我在每次查询之前和之后读取值以计算差异并获取请求导致读取和/或写入的字节数。据我所知的领域READ_BYTES计算实际磁盘IO,而RCHAR包括更多,例如linux页面缓存可以满足的读取(请参阅Understandingthecountersin/proc/[pid]/io了解详情)。这导致了假设,即RCHAR应该得出等于或大于READ_BYTES的值,但我的结果与这个假设相矛盾。我可以想象我为InfobrightICE获得的结果有一些小的block或页面开销(值是MB):QueryRCHARREAD_BYTE

Linux 和 Windows 上的 Python sys.maxint、sys.maxunicode

在64位DebianLinux6上:Python2.6.6(r266:84292,Dec262010,22:31:48)[GCC4.4.5]onlinux2Type"help","copyright","credits"or"license"formoreinformation.>>>importsys>>>sys.maxint9223372036854775807>>>sys.maxunicode1114111在64位Windows7上:Python2.7.1(r271:86832,Nov272010,17:19:03)[MSCv.150064bit(AMD64)]onwin32Ty

c - fatal error : sys/socket. h : No such file or directory, x86_64-w64-mingw32 模式

我正在尝试开发一个依赖于套接字库的程序,一旦我尝试制作它,它会提示我:fatalerror:sys/socket.h:Nosuchfileordirectory#include我的构建环境:Cygwinx64版本下的Windows8.1,构建目标:x86_64-w64-mingw32作为--host=x86_64-w64-mingw32参数。命令行:cfalgs=-m64./configure--prefix=/usr/我正在构建使用GTK+2.0的应用程序。我想在补丁下的socket.h文件下找到find:cygwin64\usr\x86_64-w64-mingw32\sys-roo

c - 内核模块参数更改(使用/sys/module)

我有一些关于linux中的/sys/module/的问题/sys/module是否包含内核的所有模块/sys/module/xxx/parameters是否包含内核模块xxxx的所有参数/sys/module/xxx/parameters/yyyy是否包含内核模块xxxx的参数yyyy的实时值如果在给定的内核模块中更改了参数,如何实时检测到此更改?我想开发一个C应用程序(用户空间)或一个shell脚本来实时检测给定内核模块参数的变化。 最佳答案 1)是的,/sys/module确实有所有的模块。2)不,/sys/module/xxx

c - Linux 串口 : Blocking Read with Timeout

我已经研究了许多有用的线程和一些教程,但我仍然对一些应该非常简单的东西有一些问题。作为引用,这里有一些我仔细阅读过的话题:Howtoimplementatimeoutinreadfunctioncall?howtoopen,read,andwritefromserialportinC无论如何,我有点问题。如果我收到数据,我的代码可以正常工作。如果我不这样做,read()函数就会停止,退出我的程序的唯一方法是使用kill-9(注意:我使用信号处理来向读取串行数据的线程发出终止信号。这不是罪魁祸首,即使我删除了信号处理,read()调用仍然会停止)。我想要做的是让读取一次阻塞并读取一个bl