我正在尝试编写最短的代码以具有阻止文件描述符。
我先设定:O_NONBLOCK第二个:ICANON,[VMIN],[VTIME]作为我的文件描述符...
我还需要设置其他哪些选项来具有阻止文件描述符?
((sample.txt为空,并且以不同模式打开()不会发生任何事情)] >>
#include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <termios.h> void set_blocking(int fd, int blocking) { int flags = fcntl(fd, F_GETFL, 0); if (blocking) flags &= ~O_NONBLOCK; else flags |= O_NONBLOCK; fcntl(fd, F_SETFL, flags); return; } int main(){ int fd; char buff[100]; struct termios options; options.c_lflag &= ~ICANON; options.c_cc[VMIN] = 2; options.c_cc[VTIME] = 0; fd = open("sample.txt",O_RDWR); tcsetattr(fd, TCSANOW, &options); set_blocking(fd,1); read(fd,buff,2); printf("%s\n",buff); return 0; }
我正在尝试编写最短的代码以具有阻止文件描述符。我先设置:O_NONBLOCK,然后再设置:ICANON,[VMIN],[VTIME]作为我的文件描述符...我还需要设置其他哪些选项...
您的代码仅修改未初始化的struct termios options
变量的一部分。当您的代码调用tcsetattr
时,大多数options
变量将设置为随机位,因此tcsetattr
可能会返回错误或将伪造的设置应用于终端。