【发布时间】:2010-07-13 22:38:12
【问题描述】:
我正在尝试编写一个打开 xeyes 应用程序的 c 代码,然后那些眼睛在特定的时间段内不断改变其颜色..
我尝试通过执行具有一种中心颜色的 xeyes、添加 3 秒的延迟、终止进程并在循环内以另一种中心颜色打开 xeyes 等等来实现这一点。
然而,在执行此代码时,第一个 xeyes 进程不会被杀死,并且后续进程不会执行。
有更好的方法吗?
【问题讨论】:
我正在尝试编写一个打开 xeyes 应用程序的 c 代码,然后那些眼睛在特定的时间段内不断改变其颜色..
我尝试通过执行具有一种中心颜色的 xeyes、添加 3 秒的延迟、终止进程并在循环内以另一种中心颜色打开 xeyes 等等来实现这一点。
然而,在执行此代码时,第一个 xeyes 进程不会被杀死,并且后续进程不会执行。
有更好的方法吗?
【问题讨论】:
原因是您正在使用 system() 命令,该命令一直等到 xeyes 关闭。这永远不会发生,因此您的代码永远不会在您的第一个系统命令之后执行。
您可以通过键入来找到有关您正在使用的功能的更多信息
man system
在命令行上。
【讨论】:
我不会使用 C 来执行此操作。你最好使用一个 shell 脚本,在后台启动 xeyes,休眠,然后杀死它并再次启动它。大概5行左右。
也就是说,为了让计时器在 xeyes 运行时而不是在它关闭后运行,您需要分叉 xeyes 进程并在单独的进程中运行等待终止它的计时器。您可能想查看 spawn.h 中的函数。
【讨论】: