写一个linux下用NON_BLOCK的write例子
时间: 2023-06-05 17:08:51 浏览: 98
好的,以下是一个使用NON_BLOCK的write的例子:
```c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main()
{
int fd;
fd = open("/dev/tty", O_WRONLY | O_NONBLOCK);
if(fd == -1)
{
perror("open error");
return -1;
}
char buff[1024];
memset(buff, 0, sizeof(buff));
strcpy(buff, "Hello, world!\n");
int ret = write(fd, buff, strlen(buff));
if(ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
{
printf("Write would block\n");
}
else if(ret == -1)
{
perror("write error");
return -1;
}
else
{
printf("Write succeeded\n");
}
close(fd);
return 0;
}
```
在这个例子中,我们使用`open`函数打开`/dev/tty`设备,并且指定了`O_WRONLY`和`O_NONBLOCK`参数。这样打开的文件描述符就是一个非阻塞的写文件描述符。
我们使用`write`函数向这个文件描述符写入数据,并且检查返回值。如果返回-1并且`errno`是`EAGAIN`或者`EWOULDBLOCK`,那么说明写操作会阻塞,我们就可以根据情况进行处理。
最后我们使用`close`函数关闭文件描述符,释放资源。
阅读全文