草庐IT

read_more

全部标签

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函数。因为我关心速度,所

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 - "Source file is more recent than executable"除了它不是

GDB提示说我的源文件比可执行文件更新,调试信息似乎确实与源文件的旧版本有关,因为gdb在空白行停止:ProgramreceivedsignalSIGSEGV,Segmentationfault.0x0000000000000000in??()(gdb)up#10x00007ffff7ba2d88inCBKeyPairGenerate(keyPair=0x602010)atlibrary/src/CBHDKeys.c:246warning:Sourcefileismorerecentthanexecutable.246(gdb)list241if(versionBytes==CB_HD

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

c - Linux 串口 : Blocking Read with Timeout

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

c - Linux 3.5 : Safe to `read(2)` from same fd `open(2)` `/dev/urandom` from multiple threads?

这样做安全吗:intfd;voidthread_main(){charbuf[M];ssize_tr=read(fd,buf,M);assert(r==M);...}intmain(){fd=open("/dev/urandom",O_RDONLY);for(inti=0;i即:从主线程open(2)ing"/dev/urandom"后,read(2)是否安全code>来自它与不同线程上下文不同步?断言在什么情况下会触发?两个线程会得到相同的数据吗?会出什么问题? 最佳答案 只要您的代码不会崩溃,它就是安全的。assert永远不会触

c - 在 Linux 上使 fgets 发出更长的 read() 调用

我正在使用fgets读取相当多行(最多128K)的文本。我看到服务器上的上下文切换过多,使用strace我看到以下内容:read(3,"90051021800840023102015201008"...,4096)=4096即fgets一次读取4096字节的block。有什么方法可以控制fgets在调用read()时使用多大的block? 最佳答案 setvbuf将是显而易见的起点。 关于c-在Linux上使fgets发出更长的read()调用,我们在StackOverflow上找到一个

python - Paramiko 错误 : Error reading SSH protocol banner

我正在使用Fabric作为我的构建脚本。我刚刚克隆了一个虚拟机并创建了一个新服务器。Fabric脚本(在下面使用paramiko)在一台服务器上运行良好,但在另一台服务器上运行不正常。由于它是一个克隆,我不知道有什么不同,但每次我运行我的Fabric脚本时,我都会收到错误ErrorreadingSSHprotocolbanner。此脚本与两台服务器上的同一用户连接。该脚本在所有其他服务器上运行良好,但我刚刚克隆的这个新服务器除外。唯一完全不同的是完全不同范围的IP地址。关于可能导致此问题的任何想法? 最佳答案 这个问题不在于Para

MongoDb 与 Cassandra :Read/Write myths?

在网上阅读几篇关于MongoDB与Cassandra读/写性能的文章,写一般来说,Cassandra的写入性能在数据量很大的情况下比Mongo的要好。请参阅下面的声明。Cassandra'sstorageengineprovidesconstant-timewritesnomatterhowbigyourdatasetgrows.WritesaremoreproblematicinMongoDB,partlybecauseoftheb-treebasedstorageengine,butmorebecauseoftheperdatabasewritelock.这是我的问题:-这个陈述仍

MongoDb 与 Cassandra :Read/Write myths?

在网上阅读几篇关于MongoDB与Cassandra读/写性能的文章,写一般来说,Cassandra的写入性能在数据量很大的情况下比Mongo的要好。请参阅下面的声明。Cassandra'sstorageengineprovidesconstant-timewritesnomatterhowbigyourdatasetgrows.WritesaremoreproblematicinMongoDB,partlybecauseoftheb-treebasedstorageengine,butmorebecauseoftheperdatabasewritelock.这是我的问题:-这个陈述仍