首页 > 解决方案 > 有没有办法打开另一个终端来访问我正在运行的同一个程序以向它传递更多的形式参数?

问题描述

我现在正在制作一个学习 SDL 的程序,并且我的 main 函数中有一个 switch 语句,用于打开一个 SDL 窗口。我还希望能够使用此 switch 语句通过命令行传递另一个参数来安全地退出程序。这真的可能吗?如果不是,有什么常见的解决方案?我总是可以绑定一个按键事件来退出它,但我希望允许用户在程序运行时通过终端对程序进行调整。

int main(int argc, char* argv[])
{
 int opt; 
 while((opt = getopt(argc, argv, "iq")) != -1)
  {
    switch (opt)
     {
      case 'i':
       init_window();
       break;
      case 'q':
       quit_safely();
       break;
     }
  }
 return 0;
}

标签: csdl

解决方案


我从某个说以下内容的人那里得到了一些信息。

“不。一旦程序执行,命令行参数就会一成不变,如果您需要以某种方式向进程发出信号,则需要一种 IPC 方法。在这种情况下,进程信号是一种选择。”

信号处理程序可以解决问题,但我意识到 SDL 有一堆函数已经使用信号处理程序来安全地退出程序。我已经制作了一个使用这些的函数,并且只会使用事件处理程序来调用它。


推荐阅读