C 中可调用的linux相关函数

一、进程相关

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()        等待子进程退出并获取子进程的返回码

你可能感兴趣的:(C 中可调用的linux相关函数)