Я столкнулся с таким кодом в дикой природе, и мне интересно, почему это работает. Код считывается со стандартного ввода (fd==2) вместо стандартного ввода (fd==0). Странно то, что это действительно работает. Вы можете читать, печатая на консоли, но не вводя по конвейеру. Любая идея, что здесь происходит?
#include <stdio.h>
#include <unistd.h>
int main(){
char buf[15];
int nchars=read(2,buf,15);
printf("%d '%s'\n",nchars,buf);
}