lock.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 58 行
C
58 行
#include <u.h>#include <libc.h>/* MAXHOSTNAMELEN is in sys/param.h */#define MAXHOSTNAMELEN 64char lockstring[MAXHOSTNAMELEN+8];voidmain(int argc, char *argv[]) { char *lockfile; int fd, ppid, ssize; struct Dir *statbuf; if (argc != 4) { fprint(2, "usage: LOCK lockfile hostname ppid\n"); exits("lock failed on usage"); } lockfile = argv[1]; if ((fd=create(lockfile, ORDWR, DMEXCL|0666)) < 0) { exits("lock failed on create"); } ppid = atoi(argv[3]); ssize = sprint(lockstring, "%s %s\n", argv[2], argv[3]); if (write(fd, lockstring, ssize) != ssize) { fprint(2, "LOCK:write(): %r\n"); exits("lock failed on write to lockfile"); } switch(fork()) { default: exits(""); case 0: break; case -1: fprint(2, "LOCK:fork(): %r\n"); exits("lock failed on fork"); } for(;;) { statbuf = dirfstat(fd); if(statbuf == nil) break; if (statbuf->length == 0){ free(statbuf); break; } free(statbuf); if (write(fd, "", 0) < 0) break; sleep(3000); } close(fd); postnote(PNGROUP, ppid, "kill"); exits("");}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?