linux系统编程手册
liao__ran
这个作者很懒,什么都没留下…
展开
-
访问/proc/sys/kernel/pid_max 文件
//访问/proc/sys/kernel/pid_max 文件#include <fcntl.h>#include "tlpi_hdr.h"#define MAX_LINE 100intmain(int argc, char *argv[]){ int fd; char line[MAX_LINE]; ssize_t n; fd = open("/proc/sys/kernel/pid_max",(argc > 1) ? O_RDWR : O.原创 2020-10-24 11:07:07 · 950 阅读 · 0 评论 -
使用uname()
//使用uname()#define _GNU_SOURCE#include <sys/utsname.h>#include "tlpi_hdr.h"intmain(int argc,char *argv[]){ struct utsname uts; if (uname(&uts) == -1) errExit("uname"); printf("Node name: %s\n",uts.nodename); prin.原创 2020-10-24 11:05:50 · 477 阅读 · 0 评论 -
使用 O_DIRECT 跳过缓冲区高速缓存
//使用 O_DIRECT 跳过缓冲区高速缓存//#define _GNU_SOURCE /*Obtion O_DIRECT definition from <fcntl.h>*/#include <fcntl.h>#include <malloc.h>#include "tlpi_hdr.h"intmain(int argc,char *argv[]){ int fd; ssize_t numRead; size_t leng.原创 2020-10-24 11:04:38 · 309 阅读 · 0 评论 -
展示函数setjmp()和longjmp()的用法
//展示函数setjmp()和longjmp()的用法#include <setjmp.h>#include "tlpi_hdr.h"#define EXIT_SUCESS 0static jmp_buf env;static voidf2(void){ longjmp(env,2);}static voidf1(int argc){ if (argc == 1) longjmp(env,1); f2();}intmain.原创 2020-09-29 17:09:24 · 230 阅读 · 0 评论 -
访问大文件
//访问大文件#define _LARGEFILE64_SOURCE#include <sys/stat.h>#include <fcntl.h>#include "tlpi_hdr.h"#define EXIT_SUCESS 0intmain(int argc, char *argv[]){ int fd; off64_t off; if (argc != 3 || strcmp(argv[1],"--help") == 0) .原创 2020-09-29 16:45:28 · 187 阅读 · 0 评论 -
copy() 复制
//实现一个简单的cp()命令,将源文件的内容复制到新文件中,程序的第一个参数代表已存在的源文件,第二个参数代表新文件// ./copy test test.txt#include <sys/stat.h>#include <fcntl.h>#include "tlpi_hdr.h"#define EXIT_SUCESS 0#ifndef BUF_SIZE /*Allow "cc -D" to override definition*/#define BUF_.原创 2020-09-29 15:20:20 · 3057 阅读 · 0 评论 -
tlpi_hdr.h头文件使用及设置
使用的头文件,主要如下:ename.c.incerror_functions.hget_num.htlpi_hdr.h其中ename.c.inc文件定义了一个字符串数组,用于对应错误码的名称。error_functions.h文件声明了本书自定义的错误处理函数。get_num.h文件声明了本书自定义的数值提取函数。tlpi_hdr.h文件则包含了后续需用到的系统调用头文件。将头文件复制到默认的编译器寻找目录下,并将实现打包成静态库,然后使用别名来默认链接静态库。具体操作如下:第一步.原创 2020-09-29 15:12:01 · 1723 阅读 · 0 评论