欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第9章 Linux编程—信号函数.pdf

    • 资源ID:70323307       资源大小:244.13KB        全文页数:26页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章 Linux编程—信号函数.pdf

    LinuxLinux操作系统操作系统操作系统操作系统 大工软件学院嵌入式系大工软件学院嵌入式系邱铁邱铁办公楼办公楼409Tel:87571521E_mail:第9章Linux编程信号函数sleep(让进程暂停执行一段时间)(让进程暂停执行一段时间)alarm(设置信号传送闹钟)(设置信号传送闹钟)示例解析示例解析#include#include void handler()printf(hellon);main()int i;signal(SIGALRM,handler);alarm(5);for(i=1;i7;i+)printf(sleep%d.n,i);sleep(1);kill(传送信号给指定的进程)(传送信号给指定的进程)续 错误代码错误代码 EINVAL 参数sig不合法 ESRCH 参数pid所指定的进程或进程组不存在 EPERM 权限不够无法传送信号给指定进程pid_t wait(int*status)发出wait调用的进程进入睡眠直到它的一个子进程退出时或收到一个不能被忽略的信号时被唤醒。如果调用发出时,已经有退出的子进程(这时子进程的状态是僵死状态),该调用立即返回。其中调用返回时参数status中包含子进程退出时的状态信息。WIFSIGNALED(status)如果子进程是因为信号而结束则此宏值为真WTERMSIG(status)取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED 来判断后才使用此宏。示例解析示例解析#include#include#include#include main()pid_t pid;int status;if(!(pid=fork()printf(Hi,I am child process!n);sleep(10);return;续 else printf(send signal to child process(%d)n,pid);sleep(1);kill(pid,SIGABRT);wait(&status);if(WIFSIGNALED(status)printf(chile process receive signal%dn,WTERMSIG(status);pause(让进程暂停直到信号出现)(让进程暂停直到信号出现)perror(打印出错误原因信息字符串)(打印出错误原因信息字符串)示例解析示例解析#include main()FILE*fp;fp=fopen(/tmp/noexist,r+);if(fp=NULL)perror(fopen);strerror返回错误原因的描述字符串返回错误原因的描述字符串示例解析示例解析/*显示错误代码0 至9 的错误原因描述*/#include main()int i;for(i=0;i10;i+)printf(%d:%sn,i,strerror(i);mkfifo(建立命名管道)(建立命名管道)表头文件表头文件#include#include 定义函数定义函数 int mkfifo(const char*pathname,mode_t mode);续 函数说明函数说明mkfifo()会依参数pathname 建立特殊的FIFO 文件,该文件必须不存在,而参数mode为该文件的权限(mode%umask),因此umask值也会影响到FIFO 文件的权限。mkfifo()建立的FIFO 文件其他进程都可以用读写一般文件的方式存取。当使用open()来打开FIFO 文件时,O_NONBLOCK 旗标会有影响:1、当使用O_NONBLOCK 旗标时,打开FIFO 文件来读取的操作会立刻返回,但是若还没有其他进程打开FIFO 文件来读取,则写入的操作会返回ENXIO 错误代码。2、没有使用O_NONBLOCK 旗标时,打开FIFO 来读取的操作会等到其他进程打开FIFO文件来写入才正常返回。同样地,打开FIFO文件来写入的操作会等到其他进程打开FIFO 文件来读取后才正常返回。续 返回值返回值 若成功则返回0,否则返回-1,错误原因存于errno中。错误代码错误代码EACCESS 参数pathname 所指定的目录路径无可执行的权限EEXIST 参数pathname 所指定的文件已存在。ENAMETOOLONG 参数pathname 的路径名称太长。ENOENT 参数pathname包含的目录不存在ENOSPC 文件系统的剩余空间不足ENOTDIR 参数pathname路径中的目录存在但却非真正的目录。EROFS 参数pathname 指定的文件存在于只读文件系统内。示例解析示例解析#include#include#include#define FIFO/tmp/fifo main()char buffer80;int fd;unlink(FIFO);mkfifo(FIFO,0666);续if(fork()0)char s =hello!n;fd=open(FIFO,O_WRONLY);write(fd,s,sizeof(s);close(fd);elsefd=open(FIFO,O_RDONLY);read(fd,buffer,80);printf(%s,buffer);close(fd);pipe(建立管道)(建立管道)表头文件表头文件#include 定义函数定义函数 int pipe(int filedes2);函数说明函数说明 pipe()会建立管道,并将文件描述词由参数filedes 数组返回。filedes0为管道里的读取端,filedes1则为管道的写入端。返回值返回值 若成功则返回零,否则返回-1,错误原因存于errno中。错误代码错误代码 EMFILE 进程已用完文件描述词最大量 ENFILE 系统已无文件描述词可用。EFAULT 参数filedes 数组地址不合法。示例解析示例解析/*父进程借管道将字符串“hello!n”传给子进程并显示*/#include main()int filedes2;char buffer80;pipe(filedes);if(fork()0)/*父进程*/char s =hello!n;write(filedes1,s,sizeof(s);else/*子进程*/read(filedes0,buffer,80);printf(%s,buffer);popen(建立管道(建立管道I/O)表头文件表头文件#include 定义函数定义函数 FILE*popen(const char*command,const char*type);函数说明函数说明 popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh-c来执行参数command的指令。参数type可使用“r”代表读取,“w”代表写入。依照此type值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。随后进程便可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中。此外,所有使用文件指针(FILE*)操作的函数也都可以使用,除了fclose()以外。续 返回值返回值 若成功则返回文件指针,否则返回NULL,错误原因存于errno中。错误代码错误代码 EINVAL 参数type不合法。注意事项注意事项 在编写具SUID/SGID权限的程序时请尽量避免使用popen(),popen()会继承环境变量,通过环境变量可能会造成系统安全的问题。示例解析示例解析#include main()FILE*fp;char buffer80;fp=popen(cat/etc/passwd,r);fgets(buffer,sizeof(buffer),fp);printf(%s,buffer);pclose(fp);

    注意事项

    本文(第9章 Linux编程—信号函数.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开