草庐IT

Handler_write

全部标签

c++ - aio_write() 和 O_NONBLOCK write() 的区别

aio_write()和O_NONBLOCKwrite()有什么区别?此外,我使用O_NONBLOCK函数将write()用于使用文件描述符的文本文件,并通过在函数前后放置一个计时器来将性能与aio_write()进行比较。当字符串的长度增加时,write()函数似乎需要更长的时间来写入文件,但aio_write()仍然保持大约相同的时间。为什么会这样?NONBLOCK和异步有什么区别?谢谢 最佳答案 使用O_NONBLOCKwrite(),write()调用将接受(即,复制到内核缓冲区)您传递给它的全部、部分或不接受任何数据(如果

c - 在库中调用 write(2) 时禁用 SIGPIPE 信号

问题是否可以在写入pipe()FD时禁用信号(SIGPIPE)的提升,无需安装我自己的信号处理程序或禁用/在全局范围内屏蔽信号?背景我正在开发一个小型库,它偶尔会创建一个管道,fork()是一个临时的子/虚拟进程,它等待来自父进程的消息。当子进程收到来自父进程的消息时,它就死掉了(有意的)。问题子进程,在我无法控制的情况下,运行来自另一个(第三方)库的代码,这很容易崩溃,所以在我write()之前我不能总是确定子进程是活的到管道。这导致我有时会尝试write()到子进程端已经死/关闭的管道,并在父进程中引发SIGPIPE.我在其他客户将要使用的库中,因此我的库必须尽可能独立并对调用应用

linux - write() 时出现段错误,缓冲区约为 8MB(OSX、Linux)

我很好奇write()和read()在Linux/OSX/FreeBSD上可以处理什么样的缓冲区大小,所以我开始尝试像下面这样的愚蠢程序:#include#include#include#include#includeintmain(void){size_ts=8*1024*1024-16*1024;while(1){s+=1024;intf=open("test.txt",O_CREAT|O_WRONLY|O_TRUNC,S_IRUSR|S_IWUSR|S_IXUSR);charmem[s];size_twritten=write(f,&mem[0],s);close(f);prin

c - C中的write()函数是阻塞的还是非阻塞的?

我在Linux手册页上寻找答案,但似乎找不到。我知道read()是阻塞的,但我仍然不确定write()。谁能指出任何文件以供澄清? 最佳答案 在read()上阅读POSIX和write().另请参阅open()等函数和pipe().这取决于您正在读取或写入的文件描述符的属性(例如O_NONBLOCK),以及底层文件类型(磁盘文件、管道、FIFO和套接字)vs字符或特殊block),等等。简而言之,read()和write()都可以是阻塞的或非阻塞的,这取决于具体情况。 关于c-C中的wr

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.这是我的问题:-这个陈述仍

c++ - 捕捉信号 : Use a member function as signal handler

我有一个对象,它在无限循环中做一些工作。main()实例化对象并调用run()方法。因为我不想使用线程,所以我需要一个解决方案来让我的对象停止运行。下面你会看到我的想法。structFoo{voidrun(){running=1;while(running)do_something_useful();std::cout如您所见,我需要异步发送信号。因此,我使用信号处理程序和sigaction。在main下面我可以想象使用。intmain(intargc,char**argv){Foofoo;structsigactionsigIntHandler;boost::functionf;f=

linux - E138 : Can't write viminfo file $HOME/. 虚拟信息

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭9年前。Improvethisquestion我在生产环境中使用opensuse。我以“测试”用户身份登录并尝试使用“vi”编辑文件但是当我要保存时该文件显示以下错误**E138:Can'twriteviminfofile/home/test/.viminfo**在“测试”用户下,所有文件和文件夹自动变为只读。我正在尝试使用“root”用户更改权限但无法更改。我也寻找像“~/.viminf*”这样的临时文件,但没有这样的东西。不知道怎么办,

linux - 从多个线程对同一个 TCP 套接字发出阻塞 write() 调用是否安全?

假设我有两个线程,T1和T2。线程T1在TCP套接字S上进行阻塞write()调用,以发送一个大的字节缓冲区B1。字节B1的缓冲区太大,以至于(a)写调用阻塞和(b)TCP必须使用多个段来发送缓冲区。线程T2还在同一TCP套接字S上进行阻塞write()调用,以发送其他一些大字节缓冲区B2。我的问题是:TCP在UNIX上的实现是否保证B1的所有字节将在B2的所有字节之前发送(反之亦然)?或者TCP是否可能交织B1和B2的内容(例如,TCP发送一个包含B1数据的段,然后发送一个包含B2数据的段,然后再次发送一个包含B1数据的段)。PS-我知道这样做不是一个好主意。我正在尝试确定某些不是我

python - MPRIS + Python (dbus) : reading and writing properties

我已经检查过这个链接:Howtohandlepropertiesofadbusinterfacewithpython.但是,那只列出了一个API...但我不知道该API来自哪里。我刚开始在python上使用dbus(对此非常兴奋,老实说^__^只是对我找到的文档不太满意),我想知道我是否可以得到一些示例代码。我专门为Rhythmbox使用MPRIS,尽管它“应该”对所有人都一样。我知道我可以通过执行以下操作访问方法并从中获得乐趣:importdbusbus=dbus.SessionBus()proxy=bus.get_object('org.mpris.MediaPlayer2.rhy