【问题标题】:C - running program accept inputC - 运行程序接受输入
【发布时间】:2014-08-19 02:17:57
【问题描述】:

这是一个 C 语言中非常初级的问题。 不知道从哪里开始寻找/搜索。

那么,如果我有一个程序在 C 中持续运行,那么通过命令行接受输入到程序中的最佳方式是什么?

EX,mysql已经在运行,但是你可以处理命令调用

mysql SELECT * FROM *

我需要不同的程序来写入文件/标准输入吗?在此处输入代码

澄清:

所以,mysql 似乎能够在它已经运行的时候接受命令......这在 C 中可能吗?

目标: 我有一些挂钩到 open gl es,我想在后台运行一个连续的绘制循环,同时能够调用诸如

之类的命令
glhookprogram make "object1" model "triangle" program "default"
glhookprogram attr "object1" position "1.0, 1.0, 0.0" scale "2.0" rotation "45, 0, 0"

这样,我可以让节点服务器在 rpi 上运行 javascript 中的硬件加速动画。

【问题讨论】:

  • “如果我有一个程序在 C 中持续运行”和“通过命令行接受输入到程序中的最佳方式是什么”是相互矛盾的要求。只有在您第一次执行程序时才会读取命令行。您可能想要做的是创建自己的命令行。
  • 试着更具体地解释你想要达到的目标。
  • 听起来您正在寻找的是一个“连续运行”在后台“服务器”,您希望能够向其中发出命令。对吗?
  • 是的,这正是我的想法。

标签: c process command stdin scanf


【解决方案1】:

看起来这就是您所需要的(很抱歉 - 我不会详细介绍,因为网络上有很多关于此的资源):

  1. “服务器” - 即您的后台进程,在内存中保持运行并可以接受和处理命令(请求)
  2. “客户端”- 一个(短期运行?)进程,可以接受来自用户的命令(GUI、命令行。网络?其他进程?)并向您的“服务器”发送请求

对于初学者来说,这不是一项简单的任务。我建议先在谷歌上搜索“服务器-客户端”和“进程间通信”,然后从那里开始。

“接受输入”到您的服务器的选项范围包括(但不限于)以下内容:

  1. (Windows) 消息
  2. 共享内存和命令队列(生产者-消费者)
  3. 共享文件(为了完整起见,仅在此处列出,我建议您不要针对您的情况使用此特定文件)
  4. 命名管道
  5. 套接字(感谢您提醒我在 cmets 中的那些,真不敢相信我错过了!)

【讨论】:

  • 没关系 YePhick,我很乐意听取您的建议。我明白你在说什么,我只是不想被人们告诉我“你做不到,你很笨,等等”而被击落。谢谢你提供一个起点!
  • 我会选择套接字。它们是最通用的,并且会教你网络编程。
猜你喜欢
  • 2021-05-26
  • 2018-03-02
  • 2015-01-22
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
相关资源
最近更新 更多