C++ 杂散故障‘\342’;流浪者‘\210’;流浪者‘\222’;Linux系统调用中的C程序
我正在尝试做一个来自Robert Love的书《Linux系统编程》第二版(第60-61页)的轮询系统调用示例。我将示例代码复制粘贴到(Trusty Tahr)上并尝试编译它,但在代码中出现了与“/342”/210”和“/222”相关的错误 下面是代码:它在第18行抛出错误,其中检查了if(ret==-1)C++ 杂散故障‘\342’;流浪者‘\210’;流浪者‘\222’;Linux系统调用中的C程序,c++,c,linux,systems-programming,C++,C,Linux,Systems Programming,我正在尝试做一个来自Robert Love的书《Linux系统编程》第二版(第60-61页)的轮询系统调用示例。我将示例代码复制粘贴到(Trusty Tahr)上并尝试编译它,但在代码中出现了与“/342”/210”和“/222”相关的错误 下面是代码:它在第18行抛出错误,其中检查了if(ret==-1) #include <stdio.h> #include <unistd.h> #include <poll.h> #define TIMEOUT 5
#include <stdio.h>
#include <unistd.h>
#include <poll.h>
#define TIMEOUT 5
/* Poll timeout, in seconds */
int main (void)
{
struct pollfd fds[2];
int ret;
/* Watch standard input for input */
fds[0].fd = STDIN_FILENO;
fds[0].events = POLLIN;
/* Watch standard output for ability to write (almost always true) */
fds[1].fd = STDOUT_FILENO;
fds[1].events = POLLOUT;
/* All set, block! */
ret = poll(fds, 2 , TIMEOUT*1000);
if (ret == −1) {
perror("poll");
return 1;
}
if (!ret) {
printf ("%d seconds elapsed.\n", TIMEOUT);
return 0;
}
if (fds[0].revents & POLLIN)
printf ("stdin is readable\n");
if (fds[1].revents & POLLOUT)
printf ("stdout is writable\n");
return 0;
}
现在,我已经讨论了关于堆栈溢出的类似问题,他们提到了转换ASCII字符(如引号“”)可能存在的问题。然而,我已经重写了IDE中的所有引用。但是它仍然在检查if(ret==-1)的行上抛出相同的错误。存在不可打印的
−代码>打开
if (ret == −1) {
将其替换为-
存在无法打印的−代码>打开
if (ret == −1) {
用-
替换它,谢谢兄弟。它可以工作:)更准确地说,它是Unicode代码点U+2212()。在大多数文本编辑器中,它可以通过正则表达式搜索来搜索/替换\x{2212}
。感谢兄弟。它可以工作:)更准确地说,它是Unicode代码点U+2212()。在大多数文本编辑器中,它可以通过正则表达式搜索来搜索/替换\x{2212}
。它实际上不是一个副本。真正的副本是规范的。更直接的分析是342 210 222(八进制)→ 0xE2 0x88 0x92(十六进制)→ Unicode代码点U+2212()的UTF-8序列。它实际上不是一个副本。真正的副本是规范的。更直接的分析是342 210 222(八进制)→ 0xE2 0x88 0x92(十六进制)→ Unicode代码点U+2212()的UTF-8序列。