E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
C-Linux环境编程
UNIX高级
环境编程
(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid
本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID 1 进程标识符(Process Identifiers) 每个进程都有一个唯一的标识符,进程ID(process ID)。 进程的ID是可重用的,如果一个进程被终止,那么它的进程ID会被系统回收,但是会延迟使用
·
2015-11-10 23:31
process
UNIX高级
环境编程
(8)进程环境(Process Environment)- 进程的启动和退出、内存布局、环境变量列表
在学习进程控制相关知识之前,我们需要了解一个单进程的运行环境。 本章我们将了解一下的内容: 程序运行时,main函数是如何被调用的; 命令行参数是如何被传入到程序中的; 一个典型的内存布局是怎样的; 如何分配内存; 程序如何使用环境变量; 程序终止的各种方式; 跳转(longjmp和setjmp)函数的工作方式,以及如何和栈交互; 进程的资源限制 &nb
·
2015-11-10 23:30
Environment
UNIX高级
环境编程
(7)标准IO函数库 - 二进制文件IO,流定位,创建临时文件和内存流
1 二进制IO(Binary IO) 在前一篇我们了解了逐字符读写和逐行读写函数。 如果我们在读写二进制文件,希望以此读写整个文件内容,这两个函数虽然可以实现,但是明显会很麻烦且多次循环明显效率很低。 为了应对这种场景,标准IO库提供了fread和fwrite函数。 函数声明: #include <stdio.h> size_t fread(void *restri
·
2015-11-10 23:29
unix
UNIX高级
环境编程
(6)标准IO函数库 - 流的概念和操作
标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题。 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题。 1 流和FILE实体(Streams and FILE Objects) 前面的章节中,IO集中在文件描述符,每一个打开的文件都对应一个文件描述符,通过文件描述符对文件进行操作。 现在使
·
2015-11-10 23:28
unix
UNIX高级
环境编程
(5)Files And Directories - 文件相关时间,目录文件相关操作
1 File Times 每个文件会维护三个时间字段,每个字段代表的时间都不同。如下表所示: 字段说明: st_mtim(the modification time)记录了文件内容最后一次被修改的时间。 st_ctim(the changed-status time)记录了文件的i-node最后一次被修改的时间,如修改文件权限位,修改文件所有者ID,修改关联到该文件
·
2015-11-10 23:28
unix
UNIX高级
环境编程
(4)Files And Directories - umask、chmod、文件系统组织结构和链接
本篇主要介绍文件和文件系统中常用的一些函数,文件系统的组织结构和硬链接、符号链接。 通过对这些知识的了解,可以对Linux文件系统有更为全面的了解。 1 umask函数 之前我们已经了解了每个文件与权限相关的9个位(bit),我们现在来了解一下当每个进程创建文件时默认会设置该文件的文件权限(the file mode creation mask)。 umask函数设置该进程默
·
2015-11-10 23:27
chmod
LINUX系统编程 由REDIS的持久化机制联想到的子进程退出的相关问题
引言: 以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程需要做的什么事情,所以特定看了UNIX
环境编程
和
·
2015-11-10 22:24
linux
LINUX
环境编程
之进程控制(上)
一、进程标识 每个进程都有一个非负整型表示的唯一进程ID。虽然该id是唯一的,但是进程ID是可复用的。当一个进程终止后,其进程id就成为复用的候选者。 系统中有一些专用进程,但是具体细节随实现而不同。ID为0的进程通常是调度进程,常常被称为交换进程。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被成为系统进程。进程ID 1通常是init进程,在自举过程结束时有内核调用。init进程绝
·
2015-11-08 11:30
linux
Unix
环境编程
-终端
1.什么是Linux的终端I/O,它分为几种类型。 终端是一种字符型设备,有多种类型,通常使用tty来简称各种类型的终端设备。终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn) ,伪终端(/dev/pty/),控制终端(/dev/tty) ,控制台终端(/dev/ttyn, /dev/console)
·
2015-11-07 11:17
unix
Unix
环境编程
-时间和日期
一.文件的时间 对每个文件保存三个时间字段,它们是: 1. 名称:: utime 功能: 修改文件的存取和修改时间 头文件: #include <utime.h> #include <sys/types.h> 函数原形: int u
·
2015-11-07 11:16
unix
Unix
环境编程
-高级IO
一.记录锁 1.记录锁的功能 当一个进程正在读或修改文件的某个部分时,它可以阻止其他进程修改同一文件区。我们不应该从字面上去理解记录锁,实际上它应该叫“区域锁”,因为它锁定的只是文件的一个(也可能是整个文件)。这个区域用来存放多用户的共享区。 2.记录锁的分类 &
·
2015-11-02 18:24
unix
Unix
环境编程
-守护进程
守护进程也称精灵进程是生存期长的一种进程,它们常常在系统引导装入时启动,在系统管比时终止。精灵进程没有控制终端,所以它们是在后台运行的。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。
·
2015-11-02 18:23
unix
Unix
环境编程
-信号
1、信号本质与来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还
·
2015-11-02 18:22
unix
Unix
环境编程
-进程
一、主要内容: 1.进程如何启动和退出的(main函数,初启函数,exit函数,atexit函数)。 (1).Linux创建进程的唯一方法就是利用shell的fork系统调用。 (2).编译C程序时,连接器会将初启函数和main函数一起装入内存形成可执行文件,指定该初起函数为该初启函数的开始执行点。 (3).初启函数负责从UNIX SHELL获得命令行参数和系统的环境变量
·
2015-11-02 18:21
unix
Unix
环境编程
-系统文件和信息
一、etc/passwd文件 1. 名称:: getpwuid/getpwnam 功能: Getpassword file entry 头文件: #include <pwd.h> 函数原形: struct passwd *getpwuid(uid_t uid); struct pass
·
2015-11-02 18:20
unix
Unix
环境编程
-出错处理
1. 名称:: perror 功能: 该函数在stderr流中输出错误信息 头文件: #include <stdio.h> 函数原形: void perror(const char *message) 参数: message 返回值: 无 &
·
2015-11-02 18:20
unix
Unix
环境编程
-文件和目录
一、打开/关闭文件 1 名称: open 目标: 打开一个文件。 头文件: #include <sys/types.h> #include <sys/stat.h> #include < fcntl.h> 函数原形: int open(const char * pathname,int flags);
·
2015-11-02 18:19
unix
Linux
环境编程
相关的文章
Linux
环境编程
相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了。趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象。
·
2015-11-02 17:18
linux
自我介绍
对操作系统有一定的了解,略懂unix
环境编程
。热爱计算机专业并想持续学习更多的计算机知识。 兴趣点:网络工程、ACG、音乐、怀
·
2015-11-02 16:18
介绍
UNIX
环境编程
学习笔记(10)——文件I/O之硬链接和符号链接
lienhua342014-09-15 1 文件系统数据结构 UNIX 文件系统通过 i 节点来存储文件的信息。如图 1 所示为一个磁盘柱面上的 i 节点和数据块示意图。其中 i 节点是一个固定长度的记录项,它包含了有关文件的大部分信息。数据块用于存储文件的实际内容。每个文件的 i 节点会记录该文件的内容所占用的数据块信息。 图 1: i 节点和数据块 图 1 中还有一些信息需要进行说明
·
2015-11-01 12:58
unix
UNIX
环境编程
学习笔记(3)——文件I/O之内核 I/O 数据结构
lienhua342014-08-27 内核使用三种数据结构表示打开的文件,分别是文件描述符表、文件表和 V 节点表。 (1) 每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,每个描述符占用一项。与每个文件描述符相关联的是: (a) 文件描述符标志。 (b) 指向一个文件表项的指针。 (2)
·
2015-11-01 12:57
数据结构
UNIX
环境编程
学习笔记(4)——文件I/O之dup复制文件描述符
lienhua342014-08-23 UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符。 #include <unistd.h> int dup(int filedes); int dup2(int filedes, int filedes2); 返回值:若成功则返回新的文件描述符,如出错则返回-1. 由 dup 函数返回的文件
·
2015-11-01 12:57
文件描述符
UNIX
环境编程
学习笔记(16)——进程管理之进程环境变量
lienhua342014-10-03 1 环境表和环境指针 在每个进程启动时,都会接到一张环境表。环境表是一个字符指针数组,其中每个指针包含一个以 null 结束的 C 字符串的地址。全局变量environ 则包含了该指针数组的地址, extern char **environ; 例如,图 1 显示了包含有 5 个环境字符串的环境表, 图 1: 含有 5 个环境字符串的环境表 2 环
·
2015-11-01 09:41
unix
2010年5月学习计划
趁着五一,好好地静下来想了一下,决定定一个5月的学习计划: 技术方面: 1.unix高级
环境编程
,part 2 ,process部分
·
2015-10-31 13:36
学习
Linux进程的实际用户ID与有效用户ID
之前在学习APUE(《高级UNIX
环境编程
》),在学习的过程中,对Linux进程的实际用户ID与有效用户ID不是很理解(第一次接触这些概念),直到最近又看了几遍之后,又看了一些网络上的资料,才搞明白。
·
2015-10-31 09:26
linux
UNIX
环境编程
学习笔记(7)——文件I/O之文件访问权限与进程访问控制
lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 实际组 ID 有效用户 ID 用于文件访问权限检查 有效组 ID 附加组 ID 保存的设置用户 ID 由 exec 函数保存 保存的设置组 ID &nbs
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(6)——文件I/O之判断文件类型
lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: (1) 普通文件(regular file) 这种文件包含了某种形式的数据,这些数据无论是文件还是二进制对于 UNIX 内核而言都是一样的。对普通文件内容的解释有处理该文件的应用程序进行。
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(2)——文件I/O之不带缓冲的 I/O
lienhua342014-08-25 1 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用 open 或 creat 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write。 按照惯例,UNIX 系统 shell 使用文件描述符 0 与进程的标
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改
lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位 st_mode 屏蔽 意义 S_IRUSR 用户 -读 S_IWUSR 用户 -写 S_I
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(8)——文件I/O之校验当前登录用户对文件的访问权限
lienhua342014-09-03 通过前面一篇随笔(文件访问权限与进程访问控制),我们知道内核校验文件的访问权限使用的是进程的有效用户 ID 和有效组 ID。但有时我们需要知道当前登录用户对某个文件访问权限。虽然说进程的有效用户 ID 和有效组 ID 通常分别等于当前登录用户 ID 和用户所在组 ID。例如,一个进程可能因设置用户 ID 以另一个用户权限运行,它仍可能想验证当前实际登录的用
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(1):——出错处理errno
lienhua342014 年 8 月 24 日 1. errno变量 文件 <errno.h> 中定义了符号 errno 以及可以赋予它的各种常量,这些常量都是以字符 E 开头。例如,若 errno 等于常量 EACCES,表示产生了权限问题(例如,没有打开所要求文件的足够权限)。 当 UNIX 函数出错时,常常返回一个负值,而且将整型变量 errno 设置成含有附加信息的各个常
·
2015-10-31 09:34
unix
UNIX
环境编程
学习笔记(20)——进程管理之exec 函数族
lienhua342014-10-07 在文档“进程控制三部曲”中,我们提到 fork 函数创建子进程之后,通常都会调用 exec 函数来执行一个新程序。调用 exec 函数之后,该进程就将执行的程序替换为新的程序,而新的程序则从 main 函数开始执行。 UNIX 提供了 6 种不同的 exec 函数供我们使用。它们的原型如下所示, #include <unistd.h>
·
2015-10-31 08:37
unix
UNIX
环境编程
学习笔记(24)——信号处理进阶学习之信号集和进程信号屏蔽字
lienhua342014-11-03 1 信号传递过程 信号源为目标进程产生了一个信号,然后由内核来决定是否要将该信号传递给目标进程。从信号产生到传递给目标进程的流程图如图 1 所示, 图 1: 信号产生、传递到处理的流程图 进程可以阻塞信号的传递。当信号源为目标进程产生了一个信号之后,内核会执行依次执行下面操作, 1. 如果目标进程设置了忽略该信号,则内核直接将该信号丢弃。 2.
·
2015-10-31 08:37
unix
UNIX
环境编程
学习笔记(23)——信号处理初步学习
lienhua342014-10-29 1 信号的概念 维基百科中关于信号的描述是这样的: 在计算机科学中,信号(英语:Signals)是 Unix、类 Unix 以及其他 POSIX 兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义
·
2015-10-31 08:37
unix
UNIX
环境编程
学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数
lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态。那么,有几个问题我们这里需要详细的学习一下。 1. 父进程一定能够获
·
2015-10-31 08:37
unix
UNIX
环境编程
学习笔记(26)——多线程编程(一):创建和终止线程
lienhua342014-11-08 在进程控制三部曲中我们学习了进程的创建、终止以及获取终止状态等的进程控制原语。线程的控制与进程的控制有相似之处,在表 1中我们列出了进程和线程相对应的控制原语。 表 1: 进程原语和线程原语的比较 进程原语 线程原语 描述 fork pthread_create 创建新的控制流 exit pthread_exit 从现有的控制流中退出
·
2015-10-31 08:37
unix
UNIX高级
环境编程
(第二版)程序运行
APUE中的代码不是download下来就可以直接编译执行的。由于头文件的问题,需要做相关的设置,修改一下相关的文件。 首先从http://www.apuebook.com/src.tar.gz下载源码压缩包,解压到相应目录,例如: mkdir /home/Rockics/src cd /home/Rockics/src/ wget http://www.apuebook.com
·
2015-10-30 14:33
unix
逐渐有意识地适当远离Windows
环境编程
和C语言
在学校的时候,接触的都是Windows环境下的编程,搞多了,觉得就那样,兴趣不大,而且现在工作基本与Windows
环境编程
无关,也好。不过呢?哪天说不定又玩
stpeace
·
2015-10-29 23:00
UNIX
环境编程
学习笔记(17)——进程管理之进程的几个基本概念
lienhua342014-10-05 1 main 函数是如何被调用的? 在编译 C 程序时,C 编译器调用链接器在生成的目标可执行程序文件中,设置一个特殊的启动例程为程序的起始地址。当内核执行 C 程序时,在调用 main 前先调用这个特殊的启动例程,该启动例程从内核取得命令行参数和环境变量值。 2 共享库 共享库使得可执行文件中不再需要包含共用的库例程,而只需在所有进程都可引用的存储区中
·
2015-10-27 16:06
unix
UNIX
环境编程
学习笔记(18)——进程管理之进程控制三部曲
lienhua342014-10-05 1 进程控制三部曲概述 UNIX 系统提供了 fork、exec、exit 和 wait 等基本的进程控制原语。通过这些进程控制原语,我们即可完成对进程创建、执行和终止等基本操作。进程的控制可以划分为三部曲, • 第一部:fork 创建新进程。 • 第二部:exec 执行新程序。 • 第三部:exit 和 wait 处理终止和等待终止。 2 第一部:
·
2015-10-27 16:06
unix
UNIX
环境编程
学习笔记(19)——进程管理之fork 函数的深入学习
lienhua342014-10-07 在“进程控制三部曲”中,我们学习到了 fork 是三部曲的第一部,用于创建一个新进程。但是关于 fork 的更深入的一些的东西我们还没有涉及到,例如,fork 创建的新进程与调用进程之间的关系、父子进程的数据共享问题等。fork 是否可以无限制的调用?如果不行的话,最大限制是多少?另外,我们还将学习一个 fork 的变体 vfork。 1 fork 创建的
·
2015-10-27 16:06
unix
UNIX
环境编程
学习笔记(14)——文件I/O之临时文件
lienhua342014-10-01 ISO C 标准 I/O 库提供了个两个函数 tmpnam 和 tmpfile 以帮助创建临时文件, #include <stdio.h> char *tmpnam(char *ptr); 返回值:指向唯一路径名的指针 tmpnam 函数产生一个与现有文件名不同的一个有效路径名字符串。每次调用它时,它都产生一个不同的路径名
·
2015-10-27 16:05
unix
UNIX
环境编程
学习笔记(15)——进程管理之进程终止
lienhua342014-10-02 1 进程的终止方式 进程的终止方式有 8 种,其中 5 种为正常终止,它们是 1. 从 main 返回。 2. 调用 exit。 3. 调用_exit 或_Exit。 4. 最后一个线程从其启动例程返回。 5. 最后一个线程调用pthread_exit。 另外三种为异常终止方式,它们是 1. 调用 abort。 2. 接到一个信号并终止。
·
2015-10-27 16:05
unix
UNIX
环境编程
学习笔记(12)——文件I/O之目录操作
lienhua342014-09-18 1 引言 在 UNIX 系统中,目录是一种特殊的文件类型。我们可以使用 open 函数来打开目录,获取文件描述符,然后调用 stat 函数来获取目录的属性信息,但是我们却不能够使用 read 函数来读取目录内容。例如,下面例子所示, #include <stdlib.h> #include <stdio.h> #includ
·
2015-10-27 16:04
unix
UNIX
环境编程
学习笔记(13)——文件I/O之标准I/O流
lienhua342014-09-29 1 标准 I/O 流 之前学习的都是不带缓冲的 I/O 操作函数,直接针对文件描述符的,每调用一次函数可能都会触发一次系统调用,单次调用可能比较快捷。但是,对于需要频繁进行 I/O 操作的程序,频繁触发系统调用产生的消耗太大。 标准 I/O 库提供了带缓冲的 I/O 操作函数,这些函数围绕着一种叫做流(stream)的东西进行。当使用标准 I/O 库打开
·
2015-10-27 16:04
unix
UNIX
环境编程
学习笔记(11)——文件I/O之文件时间以及 utime 函数
lienhua342014-09-16 1 文件的时间 每个文件都有三个时间字段,如表 1 所示。 表 1: 文件的三个时间字段 说明 字段 st_atime 文件数据的最后访问时间 st_mtime 文件数据的最后修改时间 st_ctime i 节点状态的最后更改时间 最后修改时间是文件内容最后一次被修改的时间。更改状态时间是该文件的 i 节点最后一次被修改的时间
·
2015-10-27 16:04
unix
UNIX
环境编程
学习笔记(5)——文件I/O之fcntl函数访问已打开文件的性质
lienhua342014-08-29 fcntl 函数可以改变已打开的文件的性质。 #include <fcntl.h> int fcntl(int filedes, int cmd, ... /* int arg */); fcntl 函数有 5 种功能: 1. 复制一个现有的描述符(cmd=F_DUPFD)。 2. 获取/设置文件描述符标志(cmd=F_G
·
2015-10-27 16:03
unix
STDIN_FILENO的作用及与stdin 的区别
最近在学《UNIX高级
环境编程
》,遇到有关STDIN_FILENO的问题,在此总结一下。
·
2015-10-27 16:31
File
unix
环境编程
学习笔记---------套接字------socket------客户端
简单的客户端:::::socket/*要点:对于给定的监听套接口,内核要为其维护俩个队列:1.已完成连接的队列2.未完成连接的队列*/intmain(){intsockfd=0;sockfd=socket(PF_INET,SOCK_STREAM,0);if(sockfd==-1){perror("funsocket\n");exit(0);}//客户端要要指定要连接哪一个服务器structsock
OneCode2World
·
2015-10-27 15:00
Unix高级
环境编程
[07] Unix进程环境==================================1、 进程终止 atexit()函数注册终止处理程序。 exit()或return语句: 终止处理程序->终止处理程序->标准I/O清除->_
·
2015-10-23 08:13
unix
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他