c - 有没有办法打开另一个终端来访问我正在运行的同一个程序以向它传递更多的形式参数?
问题描述
我现在正在制作一个学习 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;
}
解决方案
我从某个说以下内容的人那里得到了一些信息。
“不。一旦程序执行,命令行参数就会一成不变,如果您需要以某种方式向进程发出信号,则需要一种 IPC 方法。在这种情况下,进程信号是一种选择。”
信号处理程序可以解决问题,但我意识到 SDL 有一堆函数已经使用信号处理程序来安全地退出程序。我已经制作了一个使用这些的函数,并且只会使用事件处理程序来调用它。
推荐阅读
- python - 调试 python django 项目
- c - 尽管有足够的可用内存 (32 GB),但在 malloc() 处理 12 GB 内存后收到“分段错误:11”
- php - Facebook OAuth 一次又一次地请求许可
- bash - 编写一个 shell 脚本,该脚本将返回您的存储库 git 跳过的文件列表
- embedded - STM32 上的 Eigen 只能工作到一定大小
- matlab - griddata 在所需区域之外生成数据
- javascript - 即使有结果,Promise 也会返回未定义的值
- android - 进程'命令'NDK PATH'以非零退出值2完成
- c++ - 计算字符串 S 中所有数字出现的次数。?
- sql - 在sql表中查找重复的列值对