C 中可调用的linux相关函数
2016-04-20 16:09
106 查看
一、进程相关
1. 进程ID
头文件#include<cunistd>(c++文件,c源文件为#include<unistd.h>)
getpid( ) 获取当前进程的 ID
getppid( ) 获取当前进程的父进程ID
getpgrp( ) 获取当前进程的进程组ID
getuid( ) 获取当前进程的实际用户ID
getgid( ) 获取当前进程的实际用户组ID
geteuid( ) 获取当前进程的有效用户ID
getegid( ) 获取当前进程的有效用户组ID
getsid( pid ) 获取指定进程的会话ID
setpgid( pid, pgid ) 将pid指向的进程加入到pgid所指向的进程组 返回0表示调用成功 返回-1表示调用失败
nice( inc ) 指定新的优先级,inc取之为 -20~19,返回0表面调用成功,返回-1表示调用失败
2. 进程的环境变量
头文件#include<cstdlib>(若为c源文件则为#include<stdlib.h>)
string getenv( string str) 类似shell中的$环境变量,返回NULL表示环境变量为定义,否则返回环境变量的值。getenv(“PATH”) 则返回环境变量PATH的值
int putenv(string str) 类似shell中export的作用,返回0表示调用成功,返回-1表示调用失败。
3. 创建新的进程
fork( )
调用fork( ) 函数有两次返回,在父进程中返回子进程的标识符,在子进程中返回0。
子进程将继承父进程的以下几个属性:
进程的实际用户ID,实际用户组ID,有效用户ID,有效用户组ID
进程组ID,会话ID,控制终端
当前工作目录,根目录
文件创建掩码UMASK,环境变量
子进程不会继承父进程的以下属性:
子进程的用户时间和系统时间,都初始化为0
子进程的超时时钟设置为0
父进程的记录锁
子进程可以直接使用父进程已打开的文件描述符,包括文件描述符、套借口描述符等,这些描述符的计数会自动加1
子进程复制了父进程的数据段,所以更改子进程的全局变量数据并不能实现进程间通信
system()
system(string str ) 用来加载外部的可执行程序,执行完毕后返回当前进程,其中str表示外部程序的文件名。返回-1标识执行失败,可以从errno中获取错误信息;返回127表示执行失败,若errno为0表示调用system调用成功,被加载程序失败,若errno不为0标识调用system失败;返回其他标识执行成功
exec系列函数
exec系列函数不创建新的进程,即调用exec前后的进程ID不变。该函数先清除父进程的可执行代码映像,用心程序的代码覆盖原进程代码,并从新程序的main函数入口开始执行
4、终止进程
exit(int status) 退出进程,并返回返回码status,可以在父进程中用wait函数获取
wait() 等待子进程退出并获取子进程的返回码
1. 进程ID
头文件#include<cunistd>(c++文件,c源文件为#include<unistd.h>)
getpid( ) 获取当前进程的 ID
getppid( ) 获取当前进程的父进程ID
getpgrp( ) 获取当前进程的进程组ID
getuid( ) 获取当前进程的实际用户ID
getgid( ) 获取当前进程的实际用户组ID
geteuid( ) 获取当前进程的有效用户ID
getegid( ) 获取当前进程的有效用户组ID
getsid( pid ) 获取指定进程的会话ID
setpgid( pid, pgid ) 将pid指向的进程加入到pgid所指向的进程组 返回0表示调用成功 返回-1表示调用失败
nice( inc ) 指定新的优先级,inc取之为 -20~19,返回0表面调用成功,返回-1表示调用失败
2. 进程的环境变量
头文件#include<cstdlib>(若为c源文件则为#include<stdlib.h>)
string getenv( string str) 类似shell中的$环境变量,返回NULL表示环境变量为定义,否则返回环境变量的值。getenv(“PATH”) 则返回环境变量PATH的值
int putenv(string str) 类似shell中export的作用,返回0表示调用成功,返回-1表示调用失败。
3. 创建新的进程
fork( )
调用fork( ) 函数有两次返回,在父进程中返回子进程的标识符,在子进程中返回0。
子进程将继承父进程的以下几个属性:
进程的实际用户ID,实际用户组ID,有效用户ID,有效用户组ID
进程组ID,会话ID,控制终端
当前工作目录,根目录
文件创建掩码UMASK,环境变量
子进程不会继承父进程的以下属性:
子进程的用户时间和系统时间,都初始化为0
子进程的超时时钟设置为0
父进程的记录锁
子进程可以直接使用父进程已打开的文件描述符,包括文件描述符、套借口描述符等,这些描述符的计数会自动加1
子进程复制了父进程的数据段,所以更改子进程的全局变量数据并不能实现进程间通信
system()
system(string str ) 用来加载外部的可执行程序,执行完毕后返回当前进程,其中str表示外部程序的文件名。返回-1标识执行失败,可以从errno中获取错误信息;返回127表示执行失败,若errno为0表示调用system调用成功,被加载程序失败,若errno不为0标识调用system失败;返回其他标识执行成功
exec系列函数
exec系列函数不创建新的进程,即调用exec前后的进程ID不变。该函数先清除父进程的可执行代码映像,用心程序的代码覆盖原进程代码,并从新程序的main函数入口开始执行
4、终止进程
exit(int status) 退出进程,并返回返回码status,可以在父进程中用wait函数获取
wait() 等待子进程退出并获取子进程的返回码
相关文章推荐
- linux下 vim修改文件后如何保存
- CentOS 6.6搭建LNMP环境
- 通用虚拟机连接外网配置
- linux下mysql配置文件my.cnf详解【转】
- CentOS下主机分离搭建基于FCGI的LAMP
- linux下添加PATH环境变量
- Red Hat Enterprise Linux AS 4 安装 VMwareTools
- 网易视频云技术之如何搭建flv媒体服务器
- Linux实现的IEEE 802.1Q VLAN
- LINUX 和WINDOWS下的自动登录小脚本
- Centos7_Tengine安装+基于Lua实现应用层防护
- [置顶] Linux服务器常用操作及命令
- Linux Ctrl+z jobs bg fg使用及区别
- Lock wait timeout exceeded; try restarting transaction linux设置mysql innodb_lock_wait_timeout
- 全面解析Linux数字文件权限
- 在linux上使用yum安装JDK
- Linux下tar.xz结尾的文件的解压方法
- linux 在字符界面中如何查看超出屏幕显示范围的内容
- linux ftpusers和user_list 区别
- ubuntu Linux离线安装软件包