- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的小 C 程序(我们称之为 pointless
):
/* pointless.c */
#include <stdio.h>
#include <unistd.h>
void main(){
write(STDOUT_FILENO, "", 0); /* pointless write() of 0 bytes */
sleep(1);
write(STDOUT_FILENO, "still there!\n", 13);
}
将打印“还在那里!”正如预期的那样,经过一小段延迟。然而,
rlwrap ./pointless
在 AIX 下不打印任何内容并立即退出。
rlwrap
在第一个
write()
之后读取 0 个字节和
pointless
已经叫它退出了。
pointless
没有
rlwrap
,并与
rlwrap
所有
rlwrap
(伪)代码是这样的:
/* master is the file descriptor of the master end of a pty, while the slave is 'pointless's stdout */
/* master was opened with O_NDELAY */
while(pselect(nfds, &readfds, .....)) {
if (FD_ISSET(master, &readfds)) { /* master is "ready" for reading */
nread = read(master, buf, BUFFSIZE - 1); /* so try to read a buffer's worth */
if (nread == 0) /* 0 bytes read... */
cleanup_and_exit(); /* ... usually means EOF, doens't it? */
显然,在除 AIX 之外的所有系统上,
write
ing 0 字节
select()
在主端。写入 0 个字节似乎毫无意义,但写入 0 个字节
man 2 read
说明“成功时,读取的字节数为
SIGCHLD
然后关闭商店,但这可能会打开另一 jar
Writing a zero-length buffer (nbyte is 0) to a STREAMS device sends 0 bytes with 0 returned. However, writing a zero-length buffer to a STREAMS-based pipe or FIFO sends no message and 0 is returned. The process may issue I_SWROPT ioctl() to enable zero-length messages to be sent across the pipe or FIFO.
pty
此外,它确实是一个 STREAMS 设备,而不是管道或 FIFO。
ioctl(STDOUT_FILENO, I_SWROPT, 0)
似乎可以使 pty 符合 Unix 世界的其余部分。可悲的是,这必须从slave端调用,外部也是如此
rlwrap
s 影响范围(即使我们可以在
ioctl()
和
fork()
之间调用
exec()
- 这不能保证执行的命令不会将其改回)
最佳答案
When attempting to read from an empty pipe or FIFO:
- If no process has the pipe open for writing, read() shall return 0 to indicate end-of-file."
write()
side (粗体我的):
Before any action described below is taken, and if
nbyte
is zero and the file is a regular file, thewrite()
function may detect and return errors as described below. In the absence of errors, or if error detection is not performed, thewrite()
function shall return zero and have no other results. Ifnbyte
is zero and the file is not a regular file, the results are unspecified.
write()
因为 AIX 符合
write()
的 POSIX 标准,所以零字节无效。这里。
SIGCHLD
.
关于c - read(fd, buf, N>0) == 0,但 fd 不在 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66117936/
这是我的代码.. char buf[5000]; bool isHandshaking = false; bool isSingaling = false; while(1) { //----
这个问题在这里已经有了答案: Undefined behavior and sequence points (5 个答案) 关闭 9 年前。 示例代码 int arr[3] = { 0, 1 };
我使用的是 ubuntu 14.04。所以我有最新的内核。我正在尝试返回 libc 方法。 这是我创建环境变量的代码,稍后将其输入到受害者代码 #include #include #include
这个问题在这里已经有了答案: Is it possible to read an empty string from cin and still get true from cin.good()?
package main import ( "fmt" "os" "io" ) func main() { f1,_ := os.Create("f1") io
有什么区别(如果有的话): #define BUF (8) 和 #define BUF 8 我在 C 编程方面不是很有经验,并且从未见过只有 1 个数字的 #define 而不是将其放在括号中。 PS
错误中的代码 int main() { void *ptr = 0; int overrun = 1; ptr = malloc(overrun); while(
是 char buf[] = "test"; 在 C 中相当于 String buf = new String("test"); 在 Java 中? 而且是 char *buf; buf = "tes
在redis中有一个叫做sdahdr的结构: struct sdahdr { int len; int free; char buf[]; } 为什么不使用 char *buf 而不是 sizeof(
我正在阅读一个 C 代码来做 char * buf = malloc(sizeof (char *) * 16) 代替 char buf[sizeof (char *) * 16] 有什么区别?好吧,
我想在我的 iPhone 上获取 tcp 连接列表。我在 上得到了以下代码 How to get tcp/udp opening port list on iphone by objective-c?
我正在尝试在 visual studio 2010 中使用 opencv 和 curl 从 url 加载图像。运行代码时出现上述错误。该错误是什么意思?如何更正我的代码。这是我的代码 #include
我正在尝试了解 linux 内核中的 dma buf 框架并阅读这篇文章 http://lwn.net/Articles/489703/上面写着 用户空间实体请求一个文件描述符(fd),它是 与缓冲区
我在将原始视频数据写入 AVFrame 时遇到段错误和/或超出范围的内存写入,因此无法使用 ffmpeg 库对视频进行编码。因此,我只想问我的一个假设是否正确。 我是否正确假设 AVFrame.dat
我在 Buf 中有一大块内存我想传递给 C 库,但该库将使用超出单个调用生命周期的内存。 我知道这可能会有问题,因为垃圾收集器可以移动内存。 用于传递 Str , Nativecall docs 说“
我正在尝试包装 read函数来自 unistd.h ,但无法让它工作。 这是我所拥有的:(在文件中:read.raku) use NativeCall; # ssize_t read(int fd,
作为引用,我使用以下代码: #include #include int main (void) { char buf[100]; // ------> How do I find the
这是一个非常简单的问题,我找不到答案。我在 sqlplus (Oracle) 中,我打错了字,输入了“edit”,打开了“afiedt.buf”,据我所知,这将打开我的默认编辑器“vi”。进入编辑器后
我有一个使用 confluence.io kafka 包的带有 avro 消息的 kafka 流。这对于 java 应用程序来说工作得很好。但我现在正在尝试用 JavaScript 读取这些消息。 我
我是编程新手,我有一个关于 C 中的静态变量的项目。我看到我们可以像这样声明一个静态变量: static char *buf = NULL 最后加“=NULL”有什么作用? 最佳答案 在 st
我是一名优秀的程序员,十分优秀!