You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
#include <stdio.h> |
|
|
|
#include <uv.h> |
|
|
|
uv_loop_t *loop; |
|
uv_fs_t stdin_watcher; |
|
uv_idle_t idler; |
|
char buffer[1024]; |
|
|
|
void crunch_away(uv_idle_t* handle) { |
|
// Compute extra-terrestrial life |
|
// fold proteins |
|
// computer another digit of PI |
|
// or similar |
|
fprintf(stderr, "Computing PI...\n"); |
|
// just to avoid overwhelming your terminal emulator |
|
uv_idle_stop(handle); |
|
} |
|
|
|
void on_type(uv_fs_t *req) { |
|
if (stdin_watcher.result > 0) { |
|
buffer[stdin_watcher.result] = '\0'; |
|
printf("Typed %s\n", buffer); |
|
|
|
uv_buf_t buf = uv_buf_init(buffer, 1024); |
|
uv_fs_read(loop, &stdin_watcher, 0, &buf, 1, -1, on_type); |
|
uv_idle_start(&idler, crunch_away); |
|
} |
|
else if (stdin_watcher.result < 0) { |
|
fprintf(stderr, "error opening file: %s\n", uv_strerror(req->result)); |
|
} |
|
} |
|
|
|
int main() { |
|
loop = uv_default_loop(); |
|
|
|
uv_idle_init(loop, &idler); |
|
|
|
uv_buf_t buf = uv_buf_init(buffer, 1024); |
|
uv_fs_read(loop, &stdin_watcher, 0, &buf, 1, -1, on_type); |
|
uv_idle_start(&idler, crunch_away); |
|
return uv_run(loop, UV_RUN_DEFAULT); |
|
}
|
|
|