草庐IT

sys_read

全部标签

c - 从 sys/socket.h 了解 msghdr 结构

我试图理解sys/socket.h的msghdr结构的以下成员图书馆。structiovec*msg_iov分散/聚集数组void*msg_control辅助数据,见下文内容如下:Ancillarydataconsistsofasequenceofpairs,eachconsistingofacmsghdrstructurefollowedbyadataarray.Thedataarraycontainstheancillarydatamessage,andthecmsghdrstructurecontainsdescriptiveinformationthatallowsanappl

c - 给定任何 epoll TCP 套接字事件,如果 EPOLLRDHUP=0 且 EPOLLIN=1;后续调用 read()/recv() 是否保证返回不等于 0 的读取大小?

摘自epoll_ctl的手册:EPOLLRDHUP(sinceLinux2.6.17)Streamsocketpeerclosedconnection,orshutdownwritinghalfofconnection.(ThisflagisespeciallyusefulforwritingsimplecodetodetectpeershutdownwhenusingEdgeTriggeredmonitoring.)来自recv的手册:Ifnomessagesareavailabletobereceivedandthepeerhasperformedanorderlyshutdown

linux - 如何阻止 Sublime Text 2 在保存时删除 "Read & Execute"标志

使用SublimeText2,有时我必须编辑由cron中的bash执行的shell文件。但是,当我保存这些文件时,执行标志将从文件中删除,导致cron在尝试执行文件时失败。每次更改文件时,我都必须对文件进行chmod。以前,使用Ultra-Edit,我从未遇到过这个问题。有没有其他人处理过这个问题可以推荐修复或解决方案? 最佳答案 这个问题可以通过禁用map_archive来解决。桑巴的特点。[global]maparchive=no这应该可以解决问题。Source 关于linux-如何

Linux,取消阻塞read()

在用于串行通信的多线程Linux程序中,是否可以(最好的方法是什么)终止来自另一个线程的阻塞read()调用?我希望尽可能地保持react性,并避免在重复轮询时使用超时。这个问题的背景是我正在尝试使用JNI为Linux创建一个Scala串行通信库。我试图让native端尽可能简单,提供read()和close()函数等。在Scala方面,一个线程会调用read()并阻塞,直到来自串行端口的数据可用。但是,可以通过其他方式关闭串行端口,从而调用close()。现在,要释放阻塞的线程,我需要以某种方式取消系统读取调用。 最佳答案 一个相

c++ - 为什么对 read() 的调用会永远阻塞

我正面临一个最近才开始出现的令人费解的问题。我有一个程序,它使用一个线程写入一个文件,另一个线程从该文件中读取。两个线程都使用不同的文件描述符。写入线程使用O_WRONLY标志打开文件,读取线程以O_RDONLY模式打开文件。就逻辑而言,读取线程不知道写入线程在做什么,并且两者都可能为此使用不同的文件。写入器线程定期连续写入文件(数据来自高达20Mbit/s的设备流)。读取器线程也会定期读取文件。这是阅读器循环:while(tot%2end").arg(sz).arg(ret));if((sz-tot)!=ret){LOG(VB_FILE,LOG_DEBUG,LOC+QString("

linux - 系统调用 : difference between sys_exit(), SYS_exit 和 exit()

SYS_exit、sys_exit()和exit()有什么区别?我的理解:linux内核提供了系统调用,列在man2syscalls中。glibc提供了那些系统调用的包装函数,它们的名称与系统调用大多相似。我的问题:例如,在man2syscalls中,没有提到SYS_exit和sys_exit()。它们是什么?注意:这里的系统调用exit只是一个例子。我的问题是:SYS_xxx和sys_xxx()是什么? 最佳答案 尽管这适用于所有系统调用,但我将像您的示例一样使用exit()。sys_exit()形式的函数是内核例程的实际入口点,

c - 为什么 glibc 的 fork 实现没有使用 sys_fork?

在eglibc的nptl/sysdeps/unix/sysv/linux/i386/fork.c中有一个定义:#defineARCH_FORK()\INLINE_SYSCALL(clone,5,\CLONE_CHILD_SETTID|CLONE_CHILD_CLEARTID|SIGCHLD,0,\NULL,NULL,&THREAD_SELF->tid)在实际的__libc_fork()中用作实现的核心。但是例如在Linux的arch/x86/entry/syscalls/syscall_32.tbl中存在一个sys_fork条目,在syscalls_64.tbl中也是如此。所以显然Li

linux - 如何在 bash 脚本中使用文件描述符 3 中的 "read"进行读取?

http://bash.cyberciti.biz/file-management/shell-script-to-simulate-unix-more-command/#!/bin/bash#Writeashellscriptlikeamorecommand.Itaskstheusername,the#nameofthefileoncommandpromptanddisplaysonlythe15linesof#thefileatatime.#-----------------------------------------------------------------------

linux - 为什么 "echo foo | read a ; echo $a"没有按预期工作?

我可以在FreeBSD、GNU/Linux和Solaris下使用各种shell重现该问题。这让我挠头了一个多小时,所以我决定在这里发布问题。 最佳答案 由于管道,read在其自己的子shell中执行。echofoo|whilereada;doecho$a;done会按照您的期望去做。 关于linux-为什么"echofoo|reada;echo$a"没有按预期工作?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

linux - USB 设备枚举失败 : "device descriptor read/64, error -32"

我正在开发一个带有ST微Controller的ttyACM设备,使用相同的代码,我的主机有时可以成功枚举它(如下),但有时它只会转储以下消息。错误-32是什么意思?[枚举失败]usb1-2.1:newfullspeedUSBdevicenumber62usingehci_hcdusb1-2.1:devicedescriptorread/64,error-32usb1-2.1:devicedescriptorread/64,error-32usb1-2.1:newfullspeedUSBdevicenumber63usingehci_hcdusb1-2.1:devicedescripto