TLPI-Chapter 13文件I/O缓冲

函数:void *memalign(size_t alignment, size_t size);

The obsolete function memalign() allocates size bytes and returns a pointer to the allocated memory. The memory address will be a multiple of alignment, which must be a power of two.

memalign 分配 size 字节的空间,返回指向该空间的指针,空间的地址是 alignment 的倍数,alig......

旋转字符串

题目描述

给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。

暴力移位法

初看此题,可能最先想到的方法是按照题目所要求的,把需要移动的字符一个一个地移动到字符串的尾部,如此我们可以实现一个函数 LeftShiftOne(char* s, int n) ,以完成移动一个字符到字符串尾部的功能,代码如下所示:

#define......

TLPI-Chapter 12系统和进程信息

“The /proc file system exposes a range of kernel information to application programs. Each /proc/PID subdirectory contains files and subdirectories that provide information about the process whose ID matches PID. Various other files and directories under /proc expose system-wide information that pro......

TLPI-Chapter 11系统限制和选项

关于系统限制C语言标准和SUSv3提供了两种方法:

1.在编译程序时能够获得一些限制和选项。

2.一些限制在程序运行时可能会发生变化。对此SUSv3定义了3个函数sysconf() pathconf()和fpathconf(),供应用程序调用以检查系统实现的限制和选项。

SUSv3将其规定的限制归为三类:

运行时恒定值 路径名变量值 运行时可增加值

在shell中,可以使用getconf命令获取特定UNIX系统中已然实现的限制和选项。例:

getconf ARG_MAX

getconf NAME_MAX /boot

在运行时获取系统限制

#include <un......

TLPI-Chapter 10 时间

日历时间Calendat Time

UNIX系统内部对时间的表示均是以自1970年1月1日的零点以来的秒数来度量。日历时间存储与类型time_t的变量中,此类型是由SUSv3定义的整数类型。

系统调用gettimeofday(),可于tv指向的缓冲区中返回日历时间。

#include <sys/time.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);

Returns 0 on success, or –1 on error

参数tv是指向如下数据结构的一个指针:

struct timeval {

......

TLPI-Chapter 9 进程凭证

这一章开始看的有点懵,在网上搜索到一篇文章有助于理解链接地址Set-User-ID

1.每个进程都有一套用数字表示的用户ID和组ID。具体有实际用户ID(real user ID), 实际组ID(real group ID),有效用户ID(effective user ID),有效组ID(effective group ID),保存的set-user-ID和set-group-ID,文件系统用户ID和文件系统组ID,辅助组ID。

将上述种种ID称为进程凭证。

2.实际用户ID和实际组ID:

这两个ID确定了进程所属的用户和组。当用户登录时,会从/etc/passwd文件中读取UID......

Linux命令行大全总结(下)

本文是Linux命令行大全这本书第12章之后的阅读笔记部分。

VI简介

数字0 跳转至本行开头

Shift + 4 跳转至本行末尾

Shift + G 跳转至文件最后一行

dd 删除当前行

5dd 删除当前行和之后的4行

dG 删除当前行到文件末尾

d20G 删除从当前行至20行

复制命令

yy 复制当前行

5yy 复制当前行和之后4行

yG 复制当前行到文件末尾

y20G ......

Linux命令行大全总结(上)

阅读Linux/UNIX系统编程闲暇之余阅读Linux命令行大全这本书,想起当初毕业同学送给我时的场景,书很新,新到什么程度呢,我说这书时昨天刚买的都没毛病。

本篇博客只记录一些印象不太深刻的内容,相对较简单或对我来说比较熟练的,不再记录.

shell是一个接受由键盘输入的命令,并将其传递给操作系统来执行的程序。bash是Bourne Again Shell的首字母缩写,Bourne Again Shell基于这样一个事实,即bash是sh的增强版本,而sh是最初的UNIX shell程序,由Steve Bourne编写。

结束终端会话

直接关闭终端窗口或是在shell提示符下输......

TLPI-Chapter 8 用户和组

课后习题存在错误,在官网勘误表中更正如下:

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <pwd.h>

int

main(int argc, char *argv[])

{

if (argc != 3 || strcmp(argv[1], "--help") == 0) {

fprintf(stderr, "Usage: %s uid1 uid2\n", arg......

strtol函数

本文将介绍strtol函数,参考linux programmer's manual,如有任何疑问请评论指出.

C 库函数 long int strtol(const char nptr, char endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

声明

下面是 strtol() 函数的声明。

long int strtol(const char *nptr, char **endptr, int base);

参数

......