草庐IT

sys_read

全部标签

c - read() 和 pread(),哪种方式效率更高?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion下面是read和pread的声明:#includessize_tread(intfd,void*buf,size_tcount);ssize_tpread(intfd,void*buf,size_tcount,off_toffset);我们都知道它们的功能几乎相同,但到底哪个更高效呢?添加用例:1.扫描大文件。2.随机读取一个大文件。

python - sys.stdin 在 ctrl-d 上不关闭

我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外

python - sys.stdin 在 ctrl-d 上不关闭

我在program.py中有以下代码:fromsysimportstdinforlineinstdin:printline我运行,输入行,然后按Ctrl+D,但程序没有退出。这确实有效:$printf"echo"|pythonprogram.py为什么当我按下Ctrl+d时程序没有退出?我正在使用Fedora18终端。 最佳答案 Ctrl+D有一个奇怪的效果。它不会关闭输入流,只会导致C级fread()返回空结果。对于常规文件,这样的结果意味着文件现在已经结束,但可以接受更多阅读,例如检查是否其他人在此期间向文件写入了更多数据。此外

linux - posix read() 可以从管道接收少于请求的 4 个字节吗?

答案中的一个程序https://stackoverflow.com/a/1586277/6362199使用系统调用read()从管道接收恰好4个字节。它假定函数read()返回-1、0或4。例如,如果read()函数被信号中断,它能否返回1、2或3?在手册页read(2)中有:Onsuccess,thenumberofbytesreadisreturned(zeroindicatesendoffile),andthefilepositionisadvancedbythisnumber.Itisnotanerrorifthisnumberissmallerthanthenumberofb

linux - posix read() 可以从管道接收少于请求的 4 个字节吗?

答案中的一个程序https://stackoverflow.com/a/1586277/6362199使用系统调用read()从管道接收恰好4个字节。它假定函数read()返回-1、0或4。例如,如果read()函数被信号中断,它能否返回1、2或3?在手册页read(2)中有:Onsuccess,thenumberofbytesreadisreturned(zeroindicatesendoffile),andthefilepositionisadvancedbythisnumber.Itisnotanerrorifthisnumberissmallerthanthenumberofb

java - 为什么 mmap()(内存映射文件)比 read() 快

最近在研究JavaNIO的MappedByteBuffer。我读过一些关于它的帖子,所有帖子都提到“mmap()比read()快”在我的结论中:我对待MappedByteBuffer==MemoryMappedFile==mmap()read()必须通过磁盘文件->内核->应用程序读取数据,因此它具有上下文切换和缓冲区复制他们都说mmap()的复制或系统调用比read()少,但据我所知,它还需要在您第一次访问文件数据时从磁盘文件中读取。所以第一次读取:虚拟地址->内存->页面错误->磁盘文件->内核->内存。除了你可以随机访问它,最后3个步骤(磁盘文件->内核->内存)与read()完

java - 为什么 mmap()(内存映射文件)比 read() 快

最近在研究JavaNIO的MappedByteBuffer。我读过一些关于它的帖子,所有帖子都提到“mmap()比read()快”在我的结论中:我对待MappedByteBuffer==MemoryMappedFile==mmap()read()必须通过磁盘文件->内核->应用程序读取数据,因此它具有上下文切换和缓冲区复制他们都说mmap()的复制或系统调用比read()少,但据我所知,它还需要在您第一次访问文件数据时从磁盘文件中读取。所以第一次读取:虚拟地址->内存->页面错误->磁盘文件->内核->内存。除了你可以随机访问它,最后3个步骤(磁盘文件->内核->内存)与read()完

linux - Linux 中 unistd.h 和 sys/types.h 的区别

当我在TheOpenGroup中搜索headerunistd.h时,我发现它包含标准符号常量和类型,而对于sys/types.h,它表示数据类型。然后我发现两者都有uid_t、pid_t和几个类似的类型。我很困惑为什么他们会这样划分,他们之间有什么区别。我用谷歌搜索,但没有得到满意的答案。如果有人能给我详细的解释,我将不胜感激。谢谢。 最佳答案 POSIX和C头文件在细粒度文件中的划分可能来自过去,编译可能需要很长时间,而添加不必要的头文件会使时间更长。如果您只需要操作系统类型,比如说您的函数原型(prototype),那么只需#i

linux - Linux 中 unistd.h 和 sys/types.h 的区别

当我在TheOpenGroup中搜索headerunistd.h时,我发现它包含标准符号常量和类型,而对于sys/types.h,它表示数据类型。然后我发现两者都有uid_t、pid_t和几个类似的类型。我很困惑为什么他们会这样划分,他们之间有什么区别。我用谷歌搜索,但没有得到满意的答案。如果有人能给我详细的解释,我将不胜感激。谢谢。 最佳答案 POSIX和C头文件在细粒度文件中的划分可能来自过去,编译可能需要很长时间,而添加不必要的头文件会使时间更长。如果您只需要操作系统类型,比如说您的函数原型(prototype),那么只需#i

linux - "read -p"在 linux shell 脚本中做什么?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭7年前。Improvethisquestion我有一个已复制和编辑的脚本。如果可能的话,我需要解释其中的几行。这些是行:read-p"pleaseentertheusername