【问题标题】:c code for perpetually changing center colour in xeyes(terminal)在xeyes(终端)中永久改变中心颜色的c代码
【发布时间】:2010-07-13 22:38:12
【问题描述】:

我正在尝试编写一个打开 xeyes 应用程序的 c 代码,然后那些眼睛在特定的时间段内不断改变其颜色..

我尝试通过执行具有一种中心颜色的 xeyes、添加 3 秒的延迟、终止进程并在循环内以另一种中心颜色打开 xeyes 等等来实现这一点。

然而,在执行此代码时,第一个 xeyes 进程不会被杀死,并且后续进程不会执行。

有更好的方法吗?

【问题讨论】:

    标签: c terminal process x11


    【解决方案1】:

    原因是您正在使用 system() 命令,该命令一直等到 xeyes 关闭。这永远不会发生,因此您的代码永远不会在您的第一个系统命令之后执行。

    您可以通过键入来找到有关您正在使用的功能的更多信息

    man system
    

    在命令行上。

    【讨论】:

    • 顺便说一句,我只能通过查看您之前的请求来确定这一点。由于您似乎是新人,我将为您提供我最喜欢的 C/C++ 编码帮助网站:cppreference.com
    • 另外,如果你不知道,你可以在命令行中使用'&'符号让进程脱离。例如:系统(“xeyes &”);。如果您正在尝试学习 C,您可能希望坚持使用简单的文本 i/o 或查找图形库,直到您熟悉该语言为止。如果您的目标是制作多色 xeyes,那就向前冲吧!您还将获得进行系统调用的经验,这通常被认为是下一个主题!
    • 是的,你是对的。我找不到可以关闭 xeyes 的命令。 kill 不能解决问题。事实上,当终端失去控制并等待 xeyes 关闭时,任何命令都不会起作用。你能建议我用另一种方法来解决更大的问题,那就是改变颜色吗?
    • 为什么不直接下载 xeyes 源并修改它以更改颜色?毕竟是开源的……
    • alanc 有一点……我认为从老师的作业来看,这更有意义。另外,请记住,在寻求帮助之前,尽可能自己解决这些问题很重要,因为你要去学校专门解决这样的问题,以便让你成为一个更好的程序员。
    【解决方案2】:

    我不会使用 C 来执行此操作。你最好使用一个 shell 脚本,在后台启动 xeyes,休眠,然后杀死它并再次启动它。大概5行左右。

    也就是说,为了让计时器在 xeyes 运行时而不是在它关闭后运行,您需要分叉 xeyes 进程并在单独的进程中运行等待终止它的计时器。您可能想查看 spawn.h 中的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 2013-12-21
      • 2023-03-27
      • 2020-08-07
      相关资源
      最近更新 更多