77范文网 - 专业文章范例文档资料分享平台

Linux系统API函数手册(3)

来源:网络收集 时间:2019-03-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。 返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。 错误代码

请参考execve()。 6、exit(正常结束进程) 头文件

1 #include

定义函数

1 void exit(int status);

函数说明

exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。 7、_exit(结束进程执行) 头文件

1 #include

定义函数

1 void _exit(int status);

函数说明

_exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文件。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数取得子进程结束状态。 附加说明

_exit()不会处理标准I/O 缓冲区,如要更新缓冲区请使用exit()。

8、vfork(建立一个新的进程) 头文件

1 #include

定义函数

1 pid_t vfork(void);

函数说明

vfork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文件代码、工作目录和资源限制等。Linux 使用copy-on-write(COW)技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这

些继承的信息是复制而来,并非指相同的内存空间,因此子进程对这些变量的修改和父进程并不会同步。此外,子进程不会继承父进程的文件锁定和未处理的信号。注意,Linux不保证子进程会比父进程先执行或晚执行,因此编写程序时要留意 死锁或竞争条件的发生。 返回值

如果vfork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果vfork 失败则直接返回-1,失败原因存于errno中。 错误代码

EAGAIN 内存不足。ENOMEM 内存不足,无法配置核心所需的数据结构空间。 9、getpid(取得进程识别码) 头文件

1 #include

定义函数

1 pid_t getpid(void);

函数说明

getpid()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。 返回值

目前进程的进程识别码

10、getppid(取得父进程的进程识别码) 头文件

1 #include

定义函数

1 pid_t getppid(void);

函数说明

getppid()用来取得目前进程的父进程识别码。 返回值

目前进程的父进程识别码。 11、wait(等待子进程中断或结束) 头文件

1 #include 2 #include

定义函数

1 pid_t wait (int * status);

函数说明

wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则 参数

status可以设成NULL。子进程的结束状态值请参考waitpid()。 返回值

如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。 12、waitpid(等待子进程中断或结束) 头文件

1 #include 2 #include

定义函数

1 pid_t waitpid(pid_t pid,int * status,int options);

函数说明

waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status可以设成 NULL。参数pid为欲等待的子进程识别码,其他数值意义如下: pid<-1 等待进程组识别码为pid绝对值的任何子进程。 pid=-1 等待任何子进程,相当于wait()。

pid=0 等待进程组识别码与目前进程相同的任何子进程。 pid>0 等待任何子进程识别码为pid的子进程。 参数option可以为0 或下面的OR 组合

WNOHANG 如果没有任何已经结束的子进程则马上返回,不予以等待。

WUNTRACED 如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。 子进程的结束状态返回后存于status,底下有几个宏可判别结束情况 WIFEXITED(status)如果子进程正常结束则为非0值。

WEXITSTATUS(status)取得子进程exit()返回的结束代码,一般会先用WIFEXITED 来判断是否正常结束才能使用此宏。

WIFSIGNALED(status)如果子进程是因为信号而结束则此宏值为真

WTERMSIG(status)取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED 来判断后才使用此宏。

WIFSTOPPED(status)如果子进程处于暂停执行情况则此宏值为真。一般只有使用WUNTRACED 时才会有此情况。

WSTOPSIG(status)取得引发子进程暂停的信号代码,一般会先用WIFSTOPPED 来判断后才使用此宏。

返回值

如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。

(四)信号处理篇

1、sigaction(查询或设置信号处理方式) 头文件

1 #include

定义函数

1 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);

函数说明

sigaction()会依参数signum指定的信号编号来设置该信号的处理函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。 如参数结构sigaction定义如下

1 struct sigaction 2 {

3 void (*sa_handler) (int); 4 sigset_t sa_mask; 5 int sa_flags;

6 void (*sa_restorer) (void); 7 }

sa_handler此参数和signal()的参数handler相同,代表新的信号处理函数,其他意义请参考signal()。

sa_mask 用来设置在处理该信号时暂时将sa_mask 指定的信号搁置。 sa_restorer 此参数没有使用。

sa_flags 用来设置信号处理的其他相关操作,下列的数值可用。 OR 运算(|)组合

A_NOCLDSTOP : 如果参数signum为SIGCHLD,则当子进程暂停时并不会通知父进程 SA_ONESHOT/SA_RESETHAND:当调用新的信号处理函数前,将此信号处理方式改为系统预设的方式。

SA_RESTART:被信号中断的系统调用会自行重启

SA_NOMASK/SA_NODEFER:在处理此信号未结束前不理会此信号的再次到来。 如果参数oldact不是NULL指针,则原来的信号处理方式会由此结构sigaction 返回。 返回值

执行成功则返回0,如果有错误则返回-1。 错误代码

EINVAL 参数signum 不合法, 或是企图拦截SIGKILL/SIGSTOPSIGKILL信号 EFAULT 参数act,oldact指针地址无法存取。 EINTR 此调用被中断

2、sigaddset(增加一个信号至信号集) 头文件

1 #include

定义函数

1 int sigaddset(sigset_t *set,int signum);

函数说明

sigaddset()用来将参数signum 代表的信号加入至参数set 信号集里。 返回值

执行成功则返回0,如果有错误则返回-1。 错误代码

EFAULT 参数set指针地址无法存取 EINVAL 参数signum非合法的信号编号 3、sigdelset(从信号集里删除一个信号) 头文件

1 #include

定义函数

1 int sigdelset(sigset_t * set,int signum);

函数说明

sigdelset()用来将参数signum代表的信号从参数set信号集里删除。 返回值

执行成功则返回0,如果有错误则返回-1。 错误代码

EFAULT 参数set指针地址无法存取 EINVAL 参数signum非合法的信号编号 4、sigemptyset(初始化信号集) 头文件

1 #include

定义函数

1 int sigemptyset(sigset_t *set);

函数说明

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux系统API函数手册(3)在线全文阅读。

Linux系统API函数手册(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/509403.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: