fgetc() и другие функции ввода могут возвращать значение, когда в файловом дескрипторе нет данных. Это можно смоделировать для консольных приложений, читающих со стандартного ввода, набрав Ctrl-D на клавиатуре (по крайней мере, в Unix). Но как это сделать программно? Например, как вернуться из fgetc() в потоке чтения в следующем коде (примечание: игнорировать возможное состояние гонки)?
#include <pthread.h>
#include <stdio.h>
void* reader()
{
char read_char;
while((read_char = fgetc(stdin)) != EOF) {
;
}
pthread_exit(NULL);
}
int main(void)
{
pthread_t thread;
pthread_create(&thread, NULL, reader, NULL);
// Do something so the fgetc in the reader thread will return
pthread_exit(NULL);
}
Спасибо!
close()
на другом конце канала, но ваш пример на самом деле не имеет смысла, поскольку основной поток не контролирует другой конец стандартного ввода. - person Alex Jasmin   schedule 15.11.2010