acl/lib_fiber/samples/read/main.c

45 lines
941 B
C

#include "lib_acl.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "fiber/libfiber.h"
static void fiber_io(ACL_FIBER *fiber acl_unused, void *ctx acl_unused)
{
int ret;
char buf[8192];
printf("please input: ");
fflush(stdout);
ret = read(0, buf, sizeof(buf) - 1);
if (ret > 0) {
const char *prompt = "your input: ";
buf[ret] = 0;
//printf("read: [%s]\r\n", buf);
if (write(1, prompt, strlen(prompt)) != (int) strlen(prompt))
printf("write error: %s\r\n", acl_last_serror());
else if (write(1, buf, strlen(buf)) != (int) strlen(buf))
printf("write to stdout error: %s\r\n",
acl_last_serror());
} else
printf("read error: %s\r\n", acl_last_serror());
close(0);
acl_fiber_schedule_stop();
}
int main(void)
{
acl_msg_stdout_enable(1);
acl_fiber_create(fiber_io, NULL, 320000);
acl_fiber_schedule();
return 0;
}