diff options
author | woclass <git@wo-class.cn> | 2022-02-01 05:52:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-31 16:52:42 -0500 |
commit | 870828c8af077562c4394e243a399017552434ed (patch) | |
tree | 916254c5b1af0512006218bb01ccb0af0a7d0098 /docs/code | |
parent | 930af43437e6dddca715ebb4f2ff4b5e3602f19e (diff) | |
download | libuv-870828c8af077562c4394e243a399017552434ed.tar.gz libuv-870828c8af077562c4394e243a399017552434ed.zip |
doc/guide: update content and sample code (#3408)
- Add `Makefile` for example codes. (cherry-pick from old uvbook repo)
- Add a new example "Default loop" to "Basics of libuv"/"Default loop"
- Document review and update: `Introduction`, `Basics of libuv`, `Filesystem`
+ Update the referenced libuv code snippet
+ Link update: http->https
**Content Updates**:
- `filesystem.rst`#L291-L297: Add note for `uv_fs_event_start`
- `filesystem.rst`#L334: Add description of the callback function parameter `status`
The following examples have been tested manually in WSL2 (Ubuntu 20.04) with libuv 1.42.0:
- helloworld
- default-loop
- idle-basic
- uvcat
- uvtee
- onchange (test on macOS)
Co-authored-by: Nikhil Marathe <nsm.nikhil@gmail.com>
Diffstat (limited to 'docs/code')
-rw-r--r-- | docs/code/.gitignore | 3 | ||||
-rw-r--r-- | docs/code/Makefile | 82 | ||||
-rw-r--r-- | docs/code/default-loop/main.c | 12 |
3 files changed, 97 insertions, 0 deletions
diff --git a/docs/code/.gitignore b/docs/code/.gitignore new file mode 100644 index 00000000..c46ecde4 --- /dev/null +++ b/docs/code/.gitignore @@ -0,0 +1,3 @@ +*/* +!*.c +!*.h diff --git a/docs/code/Makefile b/docs/code/Makefile new file mode 100644 index 00000000..0526e8c2 --- /dev/null +++ b/docs/code/Makefile @@ -0,0 +1,82 @@ +examples=\ + helloworld\ + default-loop\ + idle-basic\ + uvcat\ + uvtee\ + onchange\ + thread-create\ + queue-work\ + progress\ + tcp-echo-server\ + dns\ + udp-dhcp\ + idle-compute\ + ref-timer\ + spawn\ + detach\ + proc-streams\ + cgi\ + pipe-echo-server\ + multi-echo-server\ + tty\ + tty-gravity\ + interfaces\ + locks \ + signal \ + uvstop \ + queue-cancel + +UV_PATH=$(shell pwd)/../.. +UV_LIB=$(UV_PATH)/.libs/libuv.a +CFLAGS=-g -Wall -I$(UV_PATH)/include +LIBS= + +uname_S=$(shell uname -s) + +ifeq (Darwin, $(uname_S)) +CFLAGS+=-framework CoreServices +SHARED_LIB_FLAGS=-bundle -undefined dynamic_lookup -o plugin/libhello.dylib +endif + +ifeq (Linux, $(uname_S)) +LIBS=-lrt -ldl -lm -pthread -lcurl +SHARED_LIB_FLAGS=-shared -Wl,-soname,libhello.so -o plugin/libhello.so +PLUGIN_EXE_FLAGS=-Wl,-export-dynamic +endif + + +all: $(examples) plugin/plugin proc-streams/test cgi/tick multi-echo-server/worker uvwget/uvwget + +$(examples): % : %/main.c + gcc $(CFLAGS) -o $@/$@ $< $(UV_LIB) $(LIBS) + +plugin: plugin/plugin +plugin/plugin: plugin/*.c + gcc $(CFLAGS) $(PLUGIN_EXE_FLAGS) -o plugin/plugin plugin/main.c $(UV_LIB) $(LIBS) + gcc -g -Wall -c -fPIC -o plugin/hello.o plugin/hello.c + gcc $(SHARED_LIB_FLAGS) plugin/hello.o + +proc-streams/test: proc-streams/test.c + gcc -g -Wall -o proc-streams/test proc-streams/test.c + +cgi/tick: cgi/tick.c + gcc -g -Wall -o cgi/tick cgi/tick.c + +multi-echo-server/worker: multi-echo-server/worker.c + gcc $(CFLAGS) -o multi-echo-server/worker multi-echo-server/worker.c $(UV_LIB) $(LIBS) + +uvwget: uvwget/uvwget +uvwget/uvwget: uvwget/main.c + gcc $(CFLAGS) `curl-config --cflags --libs` -o uvwget/uvwget uvwget/main.c $(UV_LIB) $(LIBS) + +clean: + for dir in $(examples); do cd $$dir; rm -f $$dir; rm -rf $$dir.dSYM; cd ..; done + rm -rf plugin/*.o plugin/libhello.* + rm -rf plugin/plugin plugin/plugin.dSYM + rm -rf proc-streams/test proc-streams/test.dSYM + rm -rf cgi/tick cgi/tick.dSYM + rm -rf multi-echo-server/worker multi-echo-server/worker.dSYM + rm -rf uvwget/uvwget uvwget/uvwget.dSYM + +.PHONY: clean all $(examples) plugin uvwget diff --git a/docs/code/default-loop/main.c b/docs/code/default-loop/main.c new file mode 100644 index 00000000..e00a4d2b --- /dev/null +++ b/docs/code/default-loop/main.c @@ -0,0 +1,12 @@ +#include <stdio.h> +#include <uv.h> + +int main() { + uv_loop_t *loop = uv_default_loop(); + + printf("Default loop.\n"); + uv_run(loop, UV_RUN_DEFAULT); + + uv_loop_close(loop); + return 0; +} |