【问题标题】:Unnamed/Nameless Pipes - maximum inactivity未命名/无名管道 - 最大不活动
【发布时间】:2020-06-10 12:52:13
【问题描述】:

我一直在分配一项任务,但我正在努力满足其中一项要求。 我的程序是这样工作的,我有任意数量的子进程,它们与几个未命名的管道进行通信。比方说,我有父进程,该进程将创建 3 个子进程。孩子 1 和 2 通过未命名的管道 1 进行通信,而孩子 2 和 3 通过未命名的管道 2 进行通信。问题是,每当其中一个管道超过 10 秒没有通信时,我必须结束所有进程。但我似乎无法找到一个解决方案,我可以检查管道 1 和管道 2 中的活动。任何帮助将不胜感激。提前致谢。

编辑:要求之一是仅使用警报和处理程序等信号来实现这一点

【问题讨论】:

  • poll()select()
  • 这是我最初的猜测之一,但我们不能使用这些功能。一切都需要使用警报和处理程序来实现
  • 你应该在问题中提及这样的要求。
  • 是的,我已经编辑过了。感谢您的建议

标签: c pipe


【解决方案1】:

建议使用popen()pclose()

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);

type 的值是:'r' 或 'w' 分别表示只读或只写。

建议阅读 MAN 页面了解所有详细信息:

popen

pclose

您可以使用:setitimer() 作为时间间隔

int getitimer(int which, struct itimerval *curr_value);

int setitimer(int which, const struct itimerval *new_value,
                 struct itimerval *old_value);

setitimer

getitimer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多