Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233144
  • 博文数量: 35
  • 博客积分: 659
  • 博客等级: 上士
  • 技术积分: 357
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 21:16
文章分类
文章存档

2012年(12)

2011年(23)

分类: LINUX

2011-12-12 12:56:52

    在数据结构的课程设计中,为了加入些亮点,和小组的同学交流后发现可以在Linux下写的程序中利用进程、信号、还有display命令调用能在程序运行的时候打开一张图片(这张图片是新开一个窗口打开的)。
  1. #include <unistd.h>    /*创建进程所需要的库*/
  2. #include <signal.h>    /*调用信号函数所需要的库*/

  3. void foo()
  4. {
  5.     exit(0);    
  6. }


  7. int main(void)
  8. {    
  9.     pid_t pid;

  10.     pid = fork();    /*创建进程*/    
  11.     
  12.     signal(SIGUSR1, foo);    /*当收到SIGUSR1的信号时,执行foo函数*/    
  13.     if (0 == pid) {    /*进入子进程*/
  14.      system("display xxx"); /*xxx是你要打开的图片的图片名字,如果图片和程序没在一个目录,就输入图片的绝对路径*/
  15.     }    
  16.     sleep(2);    /*进入父进程*/
  17.     signal(SIGUSR1, SIG_IGN);    /*父进程忽略SIGUSR1信号*/
  18.     kill(0, SIGUSR1);    /*利用kill()函数发出SIGUSR1信号,父进程和子进程都会收到这个信号*/
  19.                 /*父进程由于忽略这个信号,所以不会执行foo退出,而子进程接受到这个信号执行foo退出,这也意味着图片窗口关闭*/
  20.     .....


  21.     return 0;
  22. }
如果你不想让图片自动关闭,你可以不用信号,只需要用子进程调用system("display ..."); 打开图片即可.

  1. #include <unistd.h>

  2. int main(void)
  3. {
  4.     pid_t pid;
  5.     pid = fork();
  6.     if (0 == pid) {
  7.         system("display xxx");  /*xxx是你要打开的图片的图片名字,如果图片和程序没在一个目录,就输入图片的绝对路径*/
  8.     }
  9.     return 0;
  10. }
在这次数据结构课程设计中,我写的是校园导游程序。
    一开始执行程序的时,打开一张学校的地图,不关闭它,直到主程序退出,或者用户关闭。
    查询景点的信息时,选择相应的景点信息会打开相应的景点图片,执行返回上级菜单时,发出信号,关闭图片。

阅读(2055) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

KakitChen2011-12-12 18:22:25

baiyaxiong_oc: 多进程是吧,张释文给我演示了~.....

baiyaxiong_oc2011-12-12 14:59:24

多进程是吧,张释文给我演示了~