UNIX系统管理:系统调用-进程间通信

基本上所有的系统调用成功时返回0或正数,失败时返回负值。

进程的用户标志号管理

系统调用的格式

#include <unistd.h>

unsigned short getuid()

unsigned short getgid()

unsigned short geteuid()

unsigned short getegid()

int setuid(int uid)

int setgid(int gid)

int seteuid(int euid)

int setegid(int egid)

参数与功能说明:

前四个系统调用返回进程的实际用户标志号,有效用户标志号,实际用户组标志号和有效组标志号。这些调用总能成功。setuid和setgid用于设置进程的实际用户(组)标志号和有效用户(组)标志号。如果调用进程的有效用户标志号是超级用户标志号,则将调用进程的实际用户(组)标志号和有效用户(组)标志号设为uid和gid;如果调用进程的有效用户标志号不是超级用户标志号,但他的实际用户(组)标志号为uid(gid)时,则其有效用户(组)标志号设为uid或gid。如果调用进程的有效用户标志号不是超级用户标志号,且他的实际用户(组)标志号不为uid(gid)时,则调用失败。Seteuid和setegid与setuid,setgid类似,只不过只对有效用户(组)标志号起作用。

进程标志号管理

系统调用的格式

#include <sys/types.h>

#include <unistd.h>

int getpid()

int getpgrp()

int getppid()

int setpgrp()

int setsid()

参数与功能说明:

前三个系统调用分别返回进程的进程标志号,进程组标志号和其父进程标志号。他们总能成功返回。第四,五个调用设置进程组标志号,他将调用进程的进程组标志号改为调用进程的进程标志号,使其成为进程组首进程,并返回这一新的进程组标志号。

信号机构

signal系统调用的格式

#include <signal.h>

void (*signal(sig,func))()

int sig; /*信号值 */

void (*func)(); /*信号处理方式*/

参数与功能说明:

按函数func的定义设置调用进程对信号sig的处理方式。执行成功时,返回调用进程先前对信号sig处理方式的值,失败时返回-1。参数func的取值为SIG_DFL,SIG_IGN或用户信号处理函数地址,分别表示缺省方式,或略方式和捕获方式。

sig的取值有(重要的列出)

SIGHUP 挂起。当终端挂起时,该信号发送到和该终端相关的所有进程。当进程组中的首进程因某种原因中断时,也向该组的每个进程发送该信号

SIGINT 中断。当敲击中断键时该信号发送到和该终端相关的所有进程

SIGQUIT 退出。当敲击(ctrl+\)键时该信号发送到和该终端相关的所有进程

SIGKILL 杀死。杀死进程的信号,他不能被ignore

SIGSEGV 段违例

SIGPIPE 写管道错。当进程向一个没有任何读进程的管道写数据时,发送该信号

SIGALRM 报警时钟。

SIGTERM 软件终止信号

SIGUSR1 自定义信号

SIGUSR2 自定义信号

SIGCLD 子进程消亡。当子进程因某种原因而消亡时,它向父进程发送该信号。

SIGURG 紧急的套接口条件

SIGPOLL 在一条流上发生了用户指定的事件时,流控制机制发送该信号到用户进程

时间: 2024-09-29 12:53:49

UNIX系统管理:系统调用-进程间通信的相关文章

Webmin 1.560发布 基于Web的Unix系统管理工具

Webmin 1.560该版式本有一些重大的更新包括翻译更新,网络桥接的支持,一个新的文本登录模块不再需要Java的支持,GPT支持大硬盘,支持CentOS 6等等. Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种http://www.aliyun.com/zixun/aggregation/17569.html">管理功能并完成相应的管理动作.目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:A

UNIX系统管理:系统调用-time系统调用

在计算机的硬件中包含一个系统时钟,系统引导的时候读取该时钟,然后维持它自己的时钟计数器,利用时钟计数器对系统内的事件,如文件的创建或用户登录等给出时间记录.时钟值也可以利用time()系统调用供你自己的程序使用: #include <sys/types/h> #include (time.h> time_t time(time_t *loc); 这个系统调用返回一个time_t值,如果参数loc是指向这种类型的变量的指针,则返回值也被拷贝到这个指针所指的变量中. 数据类型time_t实际

UNIX系统管理:系统调用-进程间高级通信

基本上所有的系统调用成功时返回0或正数,失败时返回负值. 消息通信 每个消息队列都有一个msqid_ds类型的控制结构,该结构中包括对消息队列的访问权限,其数据结构如下: struct msqid_ds { struct ipc_perm msg_perm; /*操作权限结构 */ struct msg msg_first; /*指向消息队列的第一个结构*/ struct msg msg_last; /*指向消息队列的最后一个结构*/ ushort msg_cbytes; /*队列中当前字节数*

UNIX系统管理:系统调用-文件操作

基本上所有的系统调用成功时返回0或正数,失败时返回负值. 文件的创建与删除 create系统调用的格式 #include <fcntl.h> int creat(path,mode) const char *path; /*文件路径名*/ int mode; /*文件存取权*/ 参数与功能说明: 该调用创建名为path的文件.如果path已存在,则创建文件的进程对文目录应有执行权限, 并且对该文件有写权限.执行成功时,原先path文件的内容被清除,其长度被设置为0,原先文件的 mode,uid

UNIX系统管理:修复文件系统

完成这一章,你将能做以下事情: 理解文件系统是如何进行更新操作的 理解sync是如何预防文件系统错误 列出文件系统错误的三个原因 使用fsck检查和修补文件系统 文件系统的维护 日常的维护 -检查文件系统的一致性 -执行文件系统备份 -监控磁盘的使用情况 系统管理员的一个主要的职责就是保护用户的数据的安全.由于UNIX中数据通过文件系统的方式存储,系统会强制性检查文件系统的存储环境是否出现问题.文件系统的完整性十分重要,http://www.aliyun.com/zixun/aggregatio

UNIX系统管理:守护进程

守护进程(Demons)是在后台运行而有无终端或者登录shell和它结合在一起的进程.有许多标准的守护进程,其中的一些周期地运行来完成特定的任务(像atrun,典型地由cron每五分钟执行一次),而其余的则连续地运行,等待处理某些特定的事件(像inetd和lpd). 1.原理 有几种启动守护进程的方法.最常用的是: 在引导系统时启动.在这时运行的守护进程通常在系统启动script的执行周期间被启动.这些script典型地被存放在目录/etc/rc.d中. 手工地,从shell提示符启动.对任何具

UNIX系统管理:sdb的启动

首先来看看在哪些情况下需要对程序进行调试. 第一种情况(这是大多数用户都会碰到的),程序在运行过程中忽然跳了出来,屏幕上显示一个xxxx-core dumped消息,然后Shell提示符就又显示出来了,其中xxxx表示出错原因.这种情况的出现一般是系统核心认为进程的执行出现了异常,如进程试图去访问一块不允许它访问的存储区域(Memory Fault,Segmentation Fault);或者扫描某个无终止符的字符串(Bus http://www.aliyun.com/zixun/aggrega

UNIX系统管理:文件许可权限和存取

完成这一章,你可以做以下的事情: 描述和更改文件的属主和组. 描述和更改一个文件的许可权限. 描述和建立新文件的默认权限. 描述如何更改文件的用户和组的身份. 5.1 文件的权限和存取 存取一个文件需要用户的身份,和与文件相关的权限.这一章会介绍如何存取文件 权限 理解文件的读,写和执行权限 ls (ll,ls –l) 确定文件被赋予的存取权限. chmod 改变文件的存取权限. chown 改变一个文件的属主. umask 改变默认的文件存取权限 chgrp 改变一个文件的组. su 转换你的

UNIX系统管理:程序调试概述

对任何http://www.aliyun.com/zixun/aggregation/7298.html">程序开发而言,程序的调试都是开发过程中的一个重要阶段.程序调试的目的就是找出程序中隐藏的故障,校正那些不正常的指令,使程序能够正常工作. 程序的调试有几种不同的级别.最高级别当然是编程人员通过自己肉眼观察和推断,找出那些有毛病的代码并修改之.最低级别是对汇编代码进行调试.由于汇编语言代码的复杂.冗长与不直观.在汇编级对程序进行调试是一件比较费力的事.但UNIX得开发环境提供了汇编级的