在数据结构的课程设计中,为了加入些亮点,和小组的同学交流后发现可以在Linux下写的程序中利用进程、信号、还有display命令调用能在程序运行的时候打开一张图片(这张图片是新开一个窗口打开的)。
- #include <unistd.h> /*创建进程所需要的库*/
-
#include <signal.h> /*调用信号函数所需要的库*/
-
-
void foo()
-
{
-
exit(0);
-
}
-
-
-
int main(void)
-
{
-
pid_t pid;
-
-
pid = fork(); /*创建进程*/
-
-
signal(SIGUSR1, foo); /*当收到SIGUSR1的信号时,执行foo函数*/
-
if (0 == pid) { /*进入子进程*/
-
system("display xxx"); /*xxx是你要打开的图片的图片名字,如果图片和程序没在一个目录,就输入图片的绝对路径*/
-
}
-
sleep(2); /*进入父进程*/
-
signal(SIGUSR1, SIG_IGN); /*父进程忽略SIGUSR1信号*/
-
kill(0, SIGUSR1); /*利用kill()函数发出SIGUSR1信号,父进程和子进程都会收到这个信号*/
-
/*父进程由于忽略这个信号,所以不会执行foo退出,而子进程接受到这个信号执行foo退出,这也意味着图片窗口关闭*/
-
.....
-
-
-
return 0;
-
}
如果你不想让图片自动关闭,你可以不用信号,只需要用子进程调用system("display ..."); 打开图片即可.
- #include <unistd.h>
-
-
int main(void)
-
{
-
pid_t pid;
-
pid = fork();
-
if (0 == pid) {
-
system("display xxx"); /*xxx是你要打开的图片的图片名字,如果图片和程序没在一个目录,就输入图片的绝对路径*/
-
}
-
return 0;
-
}
在这次数据结构课程设计中,我写的是校园导游程序。
一开始执行程序的时,打开一张学校的地图,不关闭它,直到主程序退出,或者用户关闭。
查询景点的信息时,选择相应的景点信息会打开相应的景点图片,执行返回上级菜单时,发出信号,关闭图片。
阅读(2055) | 评论(2) | 转发(1) |