当前位置:  技术问答>linux和unix

关于信号和内存的三个有意思的问题

    来源: 互联网  发布时间:2016-03-07

    本文导语:  (1)bash编译的是静态连接的还是动态连接的?如果是动态的如何能搞成静态的(编译的时候没有象busybox一样可以选择静态还是动态)? (2)看一些人说,user空间访问kernel空间的变量有三种方式:系统调用、/proc/kcore、/dev/mem ,...


(1)bash编译的是静态连接的还是动态连接的?如果是动态的如何能搞成静态的(编译的时候没有象busybox一样可以选择静态还是动态)?
(2)看一些人说,user空间访问kernel空间的变量有三种方式:系统调用、/proc/kcore、/dev/mem ,后两种方式到底怎么用,能否具体点?
(3)进程被killed的时候,通常是系统发个信号,信号的默认处理函数是kill进程,那么被kill后,能否死个明白,即有方法知道我是被那个信号杀了的呢?最简单的可能是用自己的信号处理函数去重置默认的,但是这也太变态了。
望高手指点!

|
1.user空间不能直接访问内核空间,内核为了将数据传到用户空间,就提供了系统调用这样一种接口。
2./proc/kcore是物理内存的映像文件,用户可以直接去读物理内存,而不用受内核空间的访问限制。
3./dev/mem 是将内核空间内存映射到用户空间上,然后通过/dev/mem去访问,感觉好像在访问用户空间,其实已经被映射到内核空间了。

|
我也是初学者,共同进步!
(1)对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。
其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime)。这就是动态链接库(dynamic link library)技术。
可以用ldd命令查看命令是否依赖与某个动态链接库,带参数编译可以选择动态或者静态编译。具体的查点资料吧!
(2)也不懂
(3)unix环境高级编程中提到:SIGKILL和SIGSTOP不能忽略或捕捉,它向系统管理员提供一种可以杀死任一进程的可靠方法。所以你是无法重置自己的信号处理函数来确认进程是怎么死的,也许你可以通过它的父进程来得到它的终止状态。

|
3 进程被killed的时候,通常是系统发个信号,信号的默认处理函数是kill进程,那么被kill后,能否死个明白,即有方法知道我是被那个信号杀了的呢?最简单的可能是用自己的信号处理函数去重置默认的,但是这也太变态了。 


信号是一种软中断,在系统内部的处理方式是:当有信号被发送给某个进程时,只是把进程内的一个信号表置位,表示有什么信号到达该进程。当进程从内核准备退出时,会检查该信号表,并调用相应的信号函数来处理。如果你没有设置相应的信号处理函数,系统会根据默认设置来处理该信号,补充一点,并不是所有信号的默认处理都是把进程kill掉的。

如果你要想知道什么信号到达该进程,正确的方法就是设置自己的信号处理函数。

你还可以设置信号屏蔽,屏蔽掉你认为不需要的信号。不过这种做法一般只是在程序内你认为关键的区域且运行过程中不希望被打断的地方使用。

如楼上所讲,SIGKILL和SIGSTOP不能被屏蔽.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 进入信号处理函数,是不是会自动把进入信号加入信号屏蔽字?还有sigpending
  • 学习linux的新手问:linux进程信号掩码以及信号阻塞与信号未决怎么理解?
  • 关于信号量与UNIX信号的疑问
  • 生产者消费者问题为什么不可以共用一个信号量,如果这个信号量可以设置取值固定为0到N,即当信号量取值为N的时候阻塞进程,是否也可以?
  • 当信号量(灯)遇上信号,help!
  • 请问什么时候发出SIGKILL信号、什么时候发出SIGTERM信号?
  • 安全信号和不安全信号的实现机制有什么不同么?
  • 如何确定信号的来源?即如何知道接收到的信号来自于哪一个进程号?
  • 自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
  • 可靠信号和不可靠信号的问题
  • semaphore.h sem.c Posix 信号量 System v 信号量
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  • 信号可靠还是不可靠,取决与信号本身还是signal()/sigaction()的区别?
  • 信号处理函数里面用CRT函数可能导致"信号触发-处理"死循环吗?
  • 终端被关闭后,bash收到哪些信号,这些信号是怎么来的?
  • 书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?
  • 网络技术 iis7站长之家
  • 大侠们求指导,电信骨干网光纤信号分流成多个千兆网信号
  • 32号信号和33号信号哪里去拉?
  • 请问线程中的信号量,怎么设置成0,1信号量?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3