
Unix环境高级编程学习
jun2016425
coolnqjun@163.com
展开
-
ubuntu16.04 启动就进入命令行模式
步骤如下:sudo vi /etc/default/grub注释掉 GRUB_CMDLINE_LINUX_DEFAULT=”quiet” 这行, 即 #GRUB_CMDLINE_LINUX_DEFAULT=”quiet”把GRUB_CMDLINE_LINUX=”"改为GRUB_CMDLINE_LINUX=”text”去掉#GRUB_TERMINAL=console 的注释,即GRUB_TE...原创 2016-11-09 16:17:20 · 31572 阅读 · 4 评论 -
函数stat,fstat,fstatat和lstat
# include <sys/stat.h>int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int fd, struct stat *buf);int lstat(const char *restrict pathname, struct stat *restrict buf;int f原创 2017-08-11 09:29:28 · 1178 阅读 · 0 评论 -
如果使用追加标志O_APPEND打开一个文件以便读、写,能否仍能用lseek在任一位置开始读? 能否用lseek更新文件中任一部分的数据?
APUE-3.6习题 如果使用追加标志O_APPEND打开一个文件以便读、写,能否仍能用lseek在任一位置开始读? 能否用lseek更新文件中任一部分的数据?请编写一段程序验证。我写了一段程序, (1)去读取事先准备好的文件lseek_test, open文件的时候使用标志O_APPEND打开,然后用lseek将文件指针偏移到文件的开头,查看lseek的效果以及read的效果,文件里面的内容原创 2017-04-25 17:28:06 · 3457 阅读 · 0 评论 -
编写一个与dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理
/** 编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理* If oldfd is not a valid file descriptor, then the call fails, and newfd is not closed.* If oldfd is a valid file descriptor, and newfd has the s原创 2017-04-18 11:46:44 · 1150 阅读 · 0 评论 -
当读/写磁盘文件时,read/write是不带缓冲机制的吗?请说明原因。
实际是带有缓冲机制的, 1. 如read的时候,大多数的文件系统为改变性能都采用某种预读(read ahead)技术, 当检测到正在进行顺序读取时,系统就试图读入比应用所要求的更多数据. 2. 通常write只是将数据排入队列,而实际的写磁盘操作则可能在以后的某个时刻进行。 而数据库系统则需要使用O_SYNC,这样一来当它从write返回时就知道数据已确实写到磁盘上, 以免在系统原创 2017-04-18 11:43:55 · 2209 阅读 · 0 评论 -
出错处理APUE-1.7
当UNIX系统函数出错时,通常返回一个负值,而且整型变量errno通常被设置为具有特定信息的值。 文件 < errno.h >中定义了errno以及可以与它的各种常量。这些常量都以字符E开头。 POSIX 和 ISO C 将 errno定义为一个符号, 它扩展成为一个可以修改的整形左值(lvalue). 以前它的定义是: extern int errno; 但是在支持多线程的环境中,多个线原创 2017-04-04 23:20:10 · 405 阅读 · 1 评论 -
Linux文件I/O----APUE-chapter03练习题答案
3.1当读/写磁盘文件时,本章中描述的函数确实是不带缓冲机制的吗?请说明原因。实际是带有缓冲机制的, 1. 如read的时候,大多数的文件系统为改变性能都采用某种预读(read ahead)技术, 当检测到正在进行顺序读取时,系统就试图读入比应用所要求的更多数据. 2. 通常write只是将数据排入队列,而实际的写磁盘操作则可能在以后的某个时刻进行。 而数据库系统则需要使用O_SYNC,这样原创 2017-04-14 18:01:08 · 581 阅读 · 0 评论 -
将标准输入复制到标准输出 APUE-1.5
实例1函数open, read, write, lseek 以及close 提供了不带缓冲的I/O, 这些函数都使用文件描述符.#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#define BUFFSIZE 4096int main(void){ FILE *fp = NULL;原创 2017-03-15 18:36:08 · 334 阅读 · 0 评论 -
linux ls命令的的简单实现APUE-1.4 文件和目录
文件属性主要在主要是指文件类型(是普通文件还是目录等), 文件大小, 文件所有者,文件权限以及文件最后的修改时间等等。stat和fstat函数返回包含所有文件属性的一个信息结构。#include "apue.h"#include <dirent.h>int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp;原创 2017-03-14 23:58:17 · 297 阅读 · 0 评论 -
Unix环境高级编程学习chapter1-Unix环境高级编程运行 第三版 环境搭建
Unix环境高级编程里面程序例子运行环境搭建转载 2016-09-27 23:49:21 · 1287 阅读 · 0 评论 -
信号signal-APUE1.9
信号(signal)用于通知进程发生了某种情况。进程有以下3种处理信号的方式。1 忽略信号2 按系统默认方式处理3 提供一个函数,信号发生时调用该函数,这被称为铺抓该信号实例:从标准输入读命令并执行#include "apue.h"#include static void sig_int(int); // our signal-catching function原创 2016-11-09 23:35:18 · 497 阅读 · 0 评论 -
linux进程控制
linux 进程控制主要函数fork, exec, waitpid(exec 函数有7中变体,但经常把它们统称为exec函数)下面的程序是从标准输入命令并执行#include "apue.h"#include int main(void){ char buf[MAXLINE]; // from apue.h pid_t pid; int status; printf("%原创 2016-11-09 23:01:41 · 338 阅读 · 0 评论 -
在Ubuntu16.04下搭建samba,实现linux与windows之间的
Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。以下操作是在Ubuntu16.04 64位系统环境中进行。1、开始需要我们做的是先在我们的ubuntu下安装好samba:原创 2016-10-19 11:45:26 · 18018 阅读 · 6 评论 -
Unix文件类型
UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型。文件类型包括如下几种。(1)普通文件(regular file).这是最常用的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据,对于UNIX内核而言并无区别。对于普通文件内容的解释由处理文件的应用程序进行。 (一个值得注意的例外是二进制可执行文件。为了执行程序,内核必须理解其格式。所有二进制可执行文件都遵循原创 2017-08-12 12:49:54 · 10968 阅读 · 0 评论