1我试图在1秒后杀死一个子进程。 子进程是一个外部c程序,它运行一些嵌套的for循环,并在通过后显示“ ALL DONE”。 循环大约需要10秒钟,因此,如果我正确设置了计时器和动作处理程序,则永远不要将其设置为“全部完成”。

创建计时器后,将使用execve运行子进程。pid_t pid = -1;

void time_handler(int signal){

printf("in time_handler\n");

kill(pid, SIGKILL);

}

int main(int argc, char *argv[]){

char *const path = "/home/aidan/CSC252/a4/test";

char *const env_args[] = { (char*)0 };

pid = fork();

while(1==1){

if(pid == 0){ //in child

printf("in child\n");

struct sigaction sa;

struct itimerval *timer = malloc(sizeof(struct itimerval));

sa.sa_handler = &time_handler;

printf("sigaction: %d\n", sigaction(SIGVTALRM, &sa, NULL));

timer->it_value.tv_sec = 0;

timer->it_interval.tv_sec = 1;

printf("settimer: %d\n", setitimer(ITIMER_REAL, timer, NULL)); //start timer

//printf("getitimer: %d\n", getitimer(ITIMER_REAL, timer));

int exec = execve(path, NULL, env_args);

printf("Exec is %d\n", exec); //-1 = error

}

else if (pid > 0){//in parent

printf("in parent, pid: %d\n", pid);

printf("wait: %d\n", wait(NULL));

pid = 0;

}

}

}

sigaction和setitimer都返回0,但是我不确定我是否正确处理了定时器到期。 我尝试阅读alarm(5);

但是我的结果不成功。

当前输出为:in parent, pid: 2362

in child

sigaction: 0

settimer: 0

In test

ALL DONE

wait: 2362

in child

sigaction: 0

settimer: 0

In test

ALL DONE

我不确定为什么它只运行两次然后退出。

c语言sigaction,C语言中的Sigaction和setitimer相关推荐

  1. Go语言编程—Go语言中JSON的处理(map、struct 和 JSON字符串的相互转换)

    JSON的简单介绍 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成.尽管JSON是JavaSc ...

  2. 【重温经典C语言】~c语言中%x、%c、%d、%x等等等、c语言取地址符的作用、C语言中的 联合体

    本章目录: 1. c语言中%x.%c.%d.%x等等等 2. c语言取地址符&的作用 3. 了解 C语言中的 联合体 3.1 什么是联合体? 3.2 定义 3.2.1 举例 3.3 初始化联合 ...

  3. const 作用 c语言,在C语言中const 作用的的全面总结.doc

    右面拒账则川盾衡徊洁豁却尤骂登硫矢窍松寝春摘慌瘪悯嚏蓑篓雍淫东佳粮瘤遍榜柔脾右晕沮椒肃蛾闲惹戚谩智胜汁秀玉怠继纺侥圃唯需齿翟顿稽吩餐音欧宪撅虐镁级脖铲贵酋挚昂藕瓢需冷乃依萎听滚俄郭奴痈急欲沾挂畅好姐载 ...

  4. 1加3减5加7减9C语言表示,c语言中1+三分之一加五分之二加七分之三

    c语言中1+三分之一加五分之二加七分之三以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言中1+三分之一加五分之二加 ...

  5. linux c语言 getline,C语言中getline()函数的深入理解

    我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数.所以,自己在Linux下man了一把,并做了测试.g ...

  6. c语言 ——int16,c语言中int取值范围为16位指的是什么16位

    匿名用户 1级 2013-10-20 回答 1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中 ...

  7. 0为真1为假C语言,在C语言中0是真还是假?

    阅读:503 作为人类最基本的交流工具,语言中的每个词汇都是同样重要的,没有等级之分,没有贵贱之别.大约这又是从西方贩卖来的货色,鬼才相信. 阅读:8622 就在刚刚分手了感觉自己是以谈恋爱的理由被骗 ...

  8. java语言基础final_java语言中final的用法

    许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: (1) 编译期常数,它永远不会改变 (2) 在运行期初始化的一个值,我们不希望它发生变化 ...

  9. go语言io reader_Go语言中的io.Reader和io.Writer以及它们的实现

    在使用Go语言的过程中,无论你是实现web应用程序,还是控制台输入输出,又或者是网络操作,不可避免的会遇到IO操作,使用到io.Reader和io.Writer接口.也也许对这两个接口和相关的一些接口 ...

  10. c语言%m,C语言中rand()%m是啥意思?

    rand()%m这个函数是随机产生0到m-1的随机数:比如rand()%10就是随机产生0到9的随机数. 拓展资料 使用C语言的rand函数,生成的是伪随机数: c语言之rand函数的使用 1.写入头 ...

最新文章

  1. Tesorflow源代码安装方式以及错误的解决方法
  2. 【python数据挖掘课程】十五.Matplotlib调用imshow()函数绘制热图
  3. oracle引用vs,VS2013中使用oracle,有关引用哪个.dll
  4. Could not find a package,configuration file provided by G2O ,G2OConfig.cmake,g2o-config.cmake
  5. Pycharm回车之后不能换行或不能缩进的解决方法
  6. python将时间戳转化为标准时间格式的方法
  7. 7.2 GaussianMixture实战
  8. 小程序开发:python sanic 实现小程序登录注册
  9. 拓端tecdat|matlab使用移动平均滤波器、重采样和Hampel过滤器进行信号平滑处理
  10. html5应用方法,9 个用来加速 HTML5 应用的方法
  11. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_1_字符输入流_Reader类FileRead...
  12. python内置数据类型列表_python数据类型内置方法 字符串和列表
  13. 可用和平精英画质助手iApp源码+全开源
  14. 如何使用Fiddler进行弱网测试
  15. POS58票据热敏打印机,怎么用ESC/POS命令控制打印文字大小?
  16. 路由器登陆密码破解方法
  17. OpenCV基础(基于Opencv4.4+VS2019)
  18. 软件体系结构网课第一次笔记
  19. ISTIO文档解读学习(三)
  20. 《汇编语言》学习(十八)

热门文章

  1. Harris角点检测原理分析
  2. 画图解释 SQL join 语句
  3. BZOJ3495 : PA2010 Riddle
  4. 利用图片延迟加载来优化页面性能(jQuery)
  5. [转载]Oracle Minus关键字
  6. mysql 6.2 安装教程_linux6.2安装mysql_MySQL
  7. Spring源码分析-从@ComponentScan注解配置包扫描路径到IoC容器中的BeanDefinition,经历了什么(二)?
  8. SpringMVC中的九大组件
  9. mysql 1045 拒绝远程链接
  10. JVM初识之虚拟机内存结构