当前位置: 技术问答>linux和unix
关于signal函数
来源: 互联网 发布时间:2016-09-16
本文导语: 我想问下Linux里 signal函数 它是由 sigaction 实现的吗 ,因为我看apue 里说signal函数有老的语义,不过现在大部分是有sigction实现了 。 还有我们使用的 那些 系统函数 比如signal,fork,waitpid,sig...
我想问下Linux里 signal函数 它是由 sigaction 实现的吗 ,因为我看apue 里说signal函数有老的语义,不过现在大部分是有sigction实现了 。
还有我们使用的 那些 系统函数 比如signal,fork,waitpid,sigaction,这些函数 在内核里 应该有他们的源码吧。 可是我在signal.c 文件里 就看到看了sigprocmask 这个函数 。难道内核里的 这些函数的名字 和 我们使用的system call 名字 不一样?
还有我们使用的 那些 系统函数 比如signal,fork,waitpid,sigaction,这些函数 在内核里 应该有他们的源码吧。 可是我在signal.c 文件里 就看到看了sigprocmask 这个函数 。难道内核里的 这些函数的名字 和 我们使用的system call 名字 不一样?
|
1. 下一份glibc和内核源码.
2. 在glibc里找函数定义.
3. 第二步如果没找到,到内核里找.
glibc可能会利用一些系统调用自己实现系统调用,
例如fork就没有调用sys_fork,而是调用了clone.
2. 在glibc里找函数定义.
3. 第二步如果没找到,到内核里找.
glibc可能会利用一些系统调用自己实现系统调用,
例如fork就没有调用sys_fork,而是调用了clone.
|
1.Linux的signal是由sigaction实现的(我记得APUE里面好像有一张表格关于这个)
2.sigprocmask是另外一个内核调用了,并且你调用的像fork这些函数,都是库函数,都调用了更深层次的其他函数
2.sigprocmask是另外一个内核调用了,并且你调用的像fork这些函数,都是库函数,都调用了更深层次的其他函数
|
方法是没错,但如果你没学习过内核,你会找晕头的