Linux Programming – Process & Signal

Slides:



Advertisements
Similar presentations
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) Autumn 2010.
Advertisements

课前寄语 1 、保持纪律 2 、相互配合. 第三节 公民的投资 —— 公民的存款储蓄 课堂导入.
旅遊實務Ⅰ 授課教師:李健民 上課班級: 320. 課程大綱 旅遊業之設立程序 旅行業組織結構 旅行業之分類 旅行業之管理.
親 ( 四 ) 親近神的路. 一、親的三字訣、七字訣: 親近神,親愛人; 與主交通親近神,同情關心親愛人。 甚麼是親? 1. 親有親近、親愛,更有關心、同情、親切的 意思。 2. 親的人與人沒有間隔,拉近人與人之間的距 離,並且樂意幫助人,與人相調建造在一起。
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
进 程. “ 程序 ” 和 “ 进程 ” 进程是 OS 对 CPU 执行的程序的运行过程的一种抽象。进程有自 己的生命周期,它由于任务的启动而创建,随着任务的完成(或 终止)而消亡,它所占用的资源也随着进程的终止而释放。 Linux 内核中通常把进程称为任务,每个进程主要通过一个称为进程描 述符(
第二班群教師團隊 105 張心平 107 鐘于寧 106 黃意評 108 鄭婉茹. 第二班群之班親會說明 學校規定事項說明 教學活動說明 班群活動介紹.
4.体词 体词包括:名词,处所词,方位词,时间词,区别词,数词,量词以及一部分代词。.
差勤.
第一單元 建立java 程式.
申論題要拿高分並不容易,因為他是 有一定的技巧的,如果你遵照下列技 巧來作答申論題,相信高分並不難拿, 其技巧如下:
102大學甄選入學 個人申請、繁星推薦說明 主講人:簡慧嫻.
代理商入件流程.
新進教師研習 教務處報告 報告人:教務處 林永仁 2011 年 8 月31日.
「明清時期台灣古典散文」 教師:田啟文.
第三組做的報告 . 組長:紀美朱 組員:謝寶岳 羅芳婷 李依芳 李銘賢 還有內容.
新頒解釋函令 ● 所得稅扣(免)繳相關法令、 ● 所得稅扣(免)繳申報實務 ● 扣繳常見稅務違章類型 財政部南區國稅局屏東分局
鼻炎 症狀: 鼻(眼睛)內發癢或不舒服、 打噴嚏、 流鼻涕(水)、 鼻塞………等 。 鼻子內的任何發炎。
幼兒社會工作的發展與反思 2013年4月20日.
模块七 房地产营销渠道策略 主要内容 房地产营销渠道类型 房地产营销渠道选择方法 开发商与代理商的合作模式.
行程(process).
遣詞造句知多少? 中文系 王偉勇教授 兼通識教育中心中心主任.
四資二甲 第三週作業 物件導向程式設計.
(4)理论体系与实训模块 必须衔接、融合 本课程把理论教学体系与实训模块结构连接成一个完整的高职课程体系。
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
三、市场营销学研究的基本方法 (1)产品研究法。是以物为中心的研究方法,即在产品分类的基础上,对各类产品市场分别进行研究。 (2)机构研究法。是以研究市场营销制度为出发点,体现以人为中心的研究方法,即集中对整个市场营销系统中的各特定机构的性质和功能进行研究。 (3)职能研究法。是以研究产品从生产者到消费者手中所进行的各种营销活动过程中,市场营销组织所发挥的功能的方法。
第一章 C语言概述 计算机公共教学部.
UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制
青春期 要長大囉! 男女有別 生命的誕生~兩性結合才有下一代的新生命 為什麼會有月經? 經痛怎麼辦 ? 渡過快樂青春喜歡自己
马志强 软件学院501室 网络应用开发 马志强 软件学院501室
新竹縣政府警察局新埔分局偵查隊 姚乃文 何怡慧 富光國中
親愛的吉姆舅舅:   今天吃完晚餐後,奶奶說,在家裡情況變好以前,您要我搬到城裡跟您住。奶奶有沒有跟您說,爸爸已經好久沒有工作,也好久沒有人請媽媽做衣服了?   我們聽完都哭了,連爸爸也哭了,但是媽媽說了一個故事讓我們又笑了。她說:您們小的時候,她曾經被您追得爬到樹上去,真的嗎?   雖然我個子小,但是我很強壯,只要我會做的我都可以幫忙,但是,奶奶說,做其他事情以前,要先把功課做完。
课程网站:CourseGrading 第二讲 多进程程序设计 课程网站:CourseGrading 主讲教师: 赵长海 办公室: 新主楼G910 Spring.
最有利標及評選優勝廠商 講師 劉金龍 經歷:臺中市政府發包科科長.
基于操作系统的编程复习 张玉宏
雷 霆 战 机 By—谷恩轩&余万全.
產生新的程序:fork() (2/4) fork()回傳時,若成功 若fork()失敗,則回傳-1 新子程序將被加入於系統中
南京天石软件技术有限公司 陈锺 (QQ: Solaris 10 C编程 南京天石软件技术有限公司 陈锺 (QQ:
chapter 1-Introduction
第七章. 文件系统 (lab5).
第7章 Linux环境编程.
开始 结束.
多进程编程.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
进程及进程管理 第4章 进程及进程管理.
作業系統實習課(一) -處理程序相關指令介紹-
Process management(程序管理)
Echo Server/Client Speaker:Fang.
Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512- )
第六章. 系统调度,COW Fork和IPC (lab4)
Linux 文件操作——系统调用和标准 IO 库
第一單元 建立java 程式.
实验一、进程控制 一、实验目的 1、加深对进程的理解,进一步认识并发执行的实质; 2、分析进程争用资源现象,学习解决进程互斥的方法;
Linux Debugging ls,ps,top,etc. printk() /proc i386提供的调试机制(断点,信号,单步执行)
熊博安 教授.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 类型、对象、运算符和表达式.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab7.
第 7 章 进程间的通信.
Computer Science & Information Management
实验二:添加Linux系统调用及熟悉常见系统调用
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
第十二章 位运算.
作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五
实验三 Linux文件目录操作 一、目的 二、要求 了解并掌握Linux文件目录结构。 了解Linux文件系统与目录操作:
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7.
Unix指令4-文字編輯與程式撰寫.
《操作系统设计与实现》 Linux系统编程.
負面情緒的正面訊息 作者: 盧逸珊.
Presentation transcript:

Linux Programming – Process & Signal Reporter: P-J L

起始新程序 (1/2) #include <stdlib.h> int system(const char *string); Example 2007/7/27 Po-Sen Wang

起始新程序 (2/2) 使用 system 函數在背景執行 Example 2007/7/27 Po-Sen Wang

程序的替換 (1/3) #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg0, ..., (char *) 0); int execlp(const char *file, const char *arg0, ..., int execle(const char *path, const char *arg0, ..., (char *) 0, const char *envp[]); int execv(const char *path, const char *argv[]); int execvp(const char *file, const char *argv[]); int execve(const char *path, const char *argv[], const char *envp[]); 2007/7/27 Po-Sen Wang

程序的替換 (2/3) 使用 exec 函數來起始 ps 程式: const char *ps_argv[]={“ps”, “-ax”, 0}; const char *ps_envp[]= {“PATH=/bin:/usr/bin”, “TERM=console”, 0}; execl(“/bin/ps”, “ps”, “-ax”, 0); execlp(“ps”, “ps”, “-ax”, 0); execle(“/bin/ps”, “ps”, “-ax”, 0, ps_envp); execv(“/bin/ps”, ps_argv); execvp(“ps”, ps_argv); execve(“/bin/ps”, ps_argv, ps_evnp); 2007/7/27 Po-Sen Wang

程序的替換 (3/3) Example 2007/7/27 Po-Sen Wang

複製程序 (1/2) #include <sys/types.h> #include <unistd.h> pid_t fork(void); 起始程序 fork() 傳回子程序PID 傳回0 父始程序繼續執行 子程序 2007/7/27 Po-Sen Wang

複製程序 (2/2) Example 2007/7/27 Po-Sen Wang

等待程序 (1/2) #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *stat_val); 巨集 WIFEXITED(stat_val) 子程序正常終止,傳回非零值 WEXITSTATUS(stat_val) WIFEXITED非零,傳回子程序離開碼 WIFSIGNALED(stat_val) 子程序因漏失訊號而終止,傳回非零值 WTERMSIG(stat_val) WIFSIGNALED非零,傳回訊號碼 WIFSTOPPED(stat_val) 子程序因為收到訊號而停止,傳回非零值 WSTOPSIG(stat_val) WIFSTOPPED非零,傳回訊號碼 2007/7/27 Po-Sen Wang

等待程序 (2/2) 2007/7/27 Po-Sen Wang

Signal (1/2) 一些會造成程序立即終止的訊號: SIGABORT 程序停止 SIGALRM 警示 SIGFPE 浮點數例外 SIGHUP 掛斷 SIGILL 非法指令 SIGINT 終端機插斷 SIGKILL Kill(無法被捕捉或忽略) SIGPIPE 寫入一無收取端的pipe SIGQUIT 終端機終止 SIGSEGV 存取無效的記憶體區段 2007/7/27 Po-Sen Wang

Signal (2/2) #include <signal.h> void (*signal(int sig, void (*func)(int)))(int); func可以自定,或是SIG_IGN(忽略訊息)、SIG_DFL(恢復預設的行為) Example 2007/7/27 Po-Sen Wang

傳送訊息 (1/2) #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); #include <unistd.h> unsigned int alarm(unsigned int seconds); 2007/7/27 Po-Sen Wang

傳送訊息 (2/2) 2007/7/27 Po-Sen Wang

Sigaction (1/2) #include <signal.h> int sigaction(int sig, const struct sigaction *act, struct sigaction *oact) sigaction struct 的部分成員: void (*sa_handler)(int); //function, SIG_DFL, SIG_IGN sigset_t sa_mask; //signals to block in sa_handler int sa_flags; //signal action modifiers sa_flags: SA_NOCLDSTOP 當子程序停止時則不要產生SIGCHLD SA_RESETHAND 將訊號接收動作重設為SIG_DEL SA_RESTART 重新啟動可插斷函數,而非EINTR錯誤 SA_NODEFER 捕捉時不要將訊號加到mask中 2007/7/27 Po-Sen Wang

Sigaction (2/2) 2007/7/27 Po-Sen Wang

作業 請撰寫一程式產生一子程序。 父程序分別印出父程序及子程序的id,並等待子程序傳送SIGALRM訊號。接收到SIGALRM訊號後,在營幕上印出”Child process finish.”訊息。 子程序去執行另一個1加到100的程式,並傳送SIGALRM訊號給父程序。 2007/7/27 Po-Sen Wang