Warum wird Epollin nicht signalisiert, dass Epollin für eine anonyme Pipe -Lese -End nicht signalisiert, wenn alle Schreibenden geschlossen wurden und es keine Daten mehr zum Lesen gibt? Dies scheint sich vom Verhalten zu unterscheiden, wobei TCP -Sockets geschlossen werden und mit meinem Verständnis von Epollin signalisiert werden, wenn ein Lesedaten unter normalen Umständen nicht blockiert wird. Ich verstehe, dass Epollhup signalisiert wird, wenn das Schreibende geschlossen ist, aber ich bin mir nicht sicher, ob es der beste Weg ist, Dinge zu tun?
Warum wird Epollin nicht signalisiert, dass Epollin für eine anonyme Pipe -Lese -End nicht signalisiert, wenn alle Schreibenden geschlossen wurden und es keine Daten mehr zum Lesen gibt? Dies scheint sich vom Verhalten zu unterscheiden, wobei TCP -Sockets geschlossen werden und mit meinem Verständnis von Epollin signalisiert werden, wenn ein Lesedaten unter normalen Umständen nicht blockiert wird. Ich verstehe, dass Epollhup signalisiert wird, wenn das Schreibende geschlossen ist, aber ich bin mir nicht sicher, ob es der beste Weg ist, Dinge zu tun?[code]#include #include #include #include #include #include #include
int main(void) { int pipefd[2]; if (pipe(pipefd)) { perror("pipe"); } signal(SIGCHLD, SIG_IGN); pid_t pid = fork(); if (pid == 0) { close(pipefd[0]); for (int i = 0; i < 2'000'000; i++) { write(pipefd[1], "a", 1); } close(pipefd[1]); exit(0); } close(pipefd[1]); int epollfd = epoll_create(1); struct epoll_event event = {}; event.events = EPOLLIN; event.data.fd = pipefd[0]; epoll_ctl(epollfd, EPOLL_CTL_ADD, pipefd[0], &event); struct epoll_event events[100]; while (true) { int event_count = epoll_wait(epollfd, events, sizeof(events)/sizeof(*events), -1); for (int i = 0; i < event_count; i++) { int fd = events[i].data.fd; if (events[i].events & EPOLLIN) { printf("fd %d can be read without blocking (supposedly).\n", fd); char buf[8192]; ssize_t readb = read(fd, buf, sizeof(buf)); if (readb == 0) { printf("Finished reading pipe"); break; } if (readb < 0) { printf("Error reading pipe"); break; } printf("Read %zd bytes: '%.*s'\n", readb, (int) readb, buf); } } } } [/code]
Ich habe Socket -Handlerklasse, mit der mit Hilfe mehrerer Sockelfunktionen dem Kunden mit spezifischem IP- und Port mit Hilfe der Aufgabe kommuniziert werden. Zum ersten Mal, wenn ich writeToSocket...
Ich bin im ImageJ völlig neu und ich konnte bisher nicht die richtigen Informationen finden. Ich habe eine C ++ - Anwendung, die mehrere BMP im RAM hält. Ich möchte diese an ImageJ senden, indem ich...
Ich habe festgestellt, dass anonyme Klassen, die mit derselben Methode erstellt wurden, die gleichen Klassen sind.
function test($test) {
return new class($test) {
public function...
Mein C#-Programm lädt mithilfe von Azure.StorageServices.BlobService eine Liste von Dateien aus einem Azure Storage-Blob herunter. Aber sobald es eine bestimmte mono-2.0-bdwgc.dll-Datei erreicht,...