#制之

线程控制之线程和I/O

http://www.cnblogs.com/nufangrensheng/p/3498723.html中介绍了pread和pwrite函数,这些函数在多线程环境下是非常有帮助的,因为进程中的所有线程共享相同的文件描述符。考虑两个线程,在同一时间对同一文件描述符进行读写操作。线程A:lseek(fd,300,SEEK_...
代码星球 代码星球·2021-02-21

线程控制之线程和fork

当线程调用fork时,就为子进程创建了整个进程地址空间的副本。回忆http://www.cnblogs.com/nufangrensheng/p/3509492.html中讨论的写时复制,子进程与父进程是完全不同的进程,只要两者都没有对内存作出改动,父进程和子进程之间还可以共享内存页的副本。子进程通过继承整个地址空间的...
代码星球 代码星球·2021-02-21

线程控制之线程和信号

每个线程都有自己的信号屏蔽字,但是信号的处理是进程中所有线程共享的。这意味着尽管单个线程可以阻止某些信号,但当线程修改了与某个信号相关的处理行为以后,所有的线程都必须共享这个处理行为的改变。进程中的信号是递送到单个线程的。如果信号与硬件故障或计时器超时相关,该信号就被发送到引起该事件的线程中去,而其他的信号则被发送到任...
代码星球 代码星球·2021-02-21

线程控制之取消选项

有两个线程属性并没有包含在pthread_attr_t结构中,它们是可取消状态和可取消类型。这两个属性影响着线程在响应pthread_cancel函数(http://www.cnblogs.com/nufangrensheng/p/3519175.html)调用时所呈现的行为。可取消状态属性可以是PTHREAD_CAN...
代码星球 代码星球·2021-02-21

线程控制之线程私有数据

线程私有数据(也称线程特定数据)是存储和查询与某个线程相关的数据的一种机制。把这种数据称为线程私有数据或线程特定数据的原因是:希望每个线程可以独立地访问数据副本,而不需要担心与其他线程的同步访问问题。线程模型促进了进程中数据和属性的共享,许多人在设计线程模型时会遇到各种麻烦。但在这样的模型中,为什么还需要提出一些合适的...
代码星球 代码星球·2021-02-21

线程控制之重入

有了信号处理程序和线程,多个控制线程在同一时间可能潜在地调用同一个函数。如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。在SingleUNIXSpecification中定义的所有函数,除了表12-5中列出的函数以外,其他函数都保证是线程安全的。另外,ctermid和tmpnam函数在参数传入空...
代码星球 代码星球·2021-02-21

线程控制之同步属性

就像线程具有属性一样,线程的同步对象(如互斥量、读写锁、条件变量、自旋锁和屏障)也有属性。http://www.cnblogs.com/nufangrensheng/p/3521654.html中介绍了自旋锁的唯一的一个属性,本篇介绍互斥量、读写锁、条件变量及屏障的属性。1、互斥量属性用pthread_mutexatt...
代码星球 代码星球·2021-02-21

线程控制之线程属性

http://www.cnblogs.com/nufangrensheng/p/3518411.html中介绍了pthread_create函数,并且当时的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结构的指针。可以使用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联...
代码星球 代码星球·2021-02-21

线程控制之线程限制

在http://www.cnblogs.com/nufangrensheng/p/3496323.html中讨论了sysconf函数,SingleUNIXSpecification定义了与线程操作有关的一些限制。与其他的系统限制一样,这些线程限制也可以通过sysconf函数进行查询。表12-1总结了这些限制。表12-1...
代码星球 代码星球·2021-02-21

进程控制之进程时间

任一进程都可调用times函数以获得它自己及已终止子进程的墙上时钟时间、用户CPU时间和系统CPU时间(关于这三种时间的含义可参考:http://www.cnblogs.com/nufangrensheng/p/3495526.html)。#include<sys/times.h>clock_ttimes(...
代码星球 代码星球·2021-02-21

进程控制之用户标识

任一进程都可以得到其实际和有效用户ID及组ID。但是有时希望找到运行该程序的用户登录名。我们可以调用getpwuid(getuid()),但是如果一个用户有多个登录名,这些登录名又对应着同一个用户ID,那么又将如何呢?(一个人在口令文件中可以有多个登录项,它们的用户ID相同,但登录shell则不同。)系统通常记录用户登...
代码星球 代码星球·2021-02-21

进程控制之进程会计

大多数UNIX系统提供了一个选项以进行进程会计(processaccounting)处理。启用该选项后,每当进程结束时内核就写一个会计记录。典型的会计记录包含总量较小的二进制数据,一般包括命令名、所使用的CPU时间总量、用户ID和组ID、启动时间等。函数(acct)用于启用和禁用进程会计。唯一使用这一函数的命令是acc...
代码星球 代码星球·2021-02-21

进程控制之system函数

ISOC定义了system函数,但是其操作对系统的依赖性很强。POSIX.1包括了system接口,它扩展了ISOC定义,以描述system在POSIX.1环境中的运行行为。#include<stdlib.h>intsystem(constchar*cmdstring);如果cmdstring是一个空指针,...
代码星球 代码星球·2021-02-21

进程控制之解释器文件

所有现今的UNIX系统都支持解释器文件(interpreterfile)(也可称为解释器脚本)。这种文件是文本文件,其起始行格式是:#!pathname[optional-argument]感叹号和pathname之间的空格是可选的。最常见的解释器文件以下列行开始:#!/bin/shpathname通常是绝对路径名,对...

进程控制之更改用户ID和组ID

在UNIX系统中,特权(例如能改变当前日期的表示法以及访问控制(例如,能否读、写一特定文件))是基于用户ID和组ID的。当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己的用户ID或组ID,使得新ID具有合适的特权或访问权限。与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要更换用户I...
首页上一页123下一页尾页