QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1088|回复: 2

求助:关于signal函数

[复制链接]
发表于 2004-7-12 09:24:36 | 显示全部楼层 |阅读模式
请教诸位大侠十万火急)
       我将UNIX下的fortran77程序移植到RH8.0下,其中源程序中是这样使用signal函数的:
      subroutine enablc
      external ctrlco                                                   
      integer signum,flag                                               
      integer signal                                                   
      signum=2                                                         
      flag  =-1                                                         
      inum  =signal(signum,ctrlco,flag)
      return
      end

       在程序中用三个参数,
      第一个signum=2代表SIGINT,这里是指键盘操作"ctrl c",
      第二个参数是信号发生时调用的子程序,

       不知道第三个参数flag=-1有什么功能?


      但是该段程序在linux下编译不通过,
      enablc.f: In subroutine `enablc':
      enablc.f:7:
         inum  =signal(signum,ctrlco,flag)
                ^
       Too many arguments passed to intrinsic `SIGNAL' at (^)
       报错:有多余的参数.
      
       我将flag删掉调后,程序虽然编译通过,但是执行后,就没预想的结果了.
       请教诸位大侠:我该怎么修改该程序?
发表于 2004-7-12 10:41:38 | 显示全部楼层
定义函数  void (*signal(int signum,void(* handler)(int)))(int);

函数说明  signal()会依参数signum 指定的信号编号来设置该信号的处理函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。如果参数handler不是函数指针,则必须是下列两个常数之一:
SIG_IGN 忽略参数signum指定的信号。
SIG_DFL 将参数signum 指定的信号重设为核心预设的信号处理方式。
回复

使用道具 举报

发表于 2004-7-16 10:54:38 | 显示全部楼层
对不起啊,完全不懂FORTRAN, :-(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 20:56 , Processed in 0.045700 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表