您的位置:首页 > 运维架构 > Linux

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() 等待子进程退出并获取子进程的返回码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: