gpt4 book ai didi

c - 从 C 执行程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:20 27 4
gpt4 key购买 nike

我试图让一些值显示在电子墨水显示器上(通过 SPI)。我已经编写了软件来初始化显示并显示作为命令行参数传递的值。问题是,由于电子墨水技术,显示需要几秒钟才能完全实现,所以此时显示程序也在运行。

另一个(“Master”-)程序收集值并做其他事情。它有一个主循环,必须以至少 10 次/秒的速度循环。所以我想从主循环中启动显示程序并立即继续循环。

当使用 system()execl() 时,主程序要么等待显示程序完成,要么退出到新进程。

有没有一种方法可以直接从其他程序中启动其他程序,而无需在它们之间建立任何进一步的连接?它应该在 Linux 上运行。fork() 可能是一个解决方案吗?

最佳答案

快速而肮脏的方法:使用带有背景后缀(&)的system

char cmd[200];
sprintf("%190s &","your_command");
system(cmd);

请注意,它不可移植,因为它依赖于底层 shell。对于 Windows,你会这样做:

sprintf("start %190s","your_command");

快速而肮脏的解决方案的主要缺点是它是“即发即弃”。如果程序无法正确执行,只要 shell 可以启动进程,您仍然会得到一个 0 返回码。

可移植方法(也允许处理进程的返回代码)稍微复杂一些,涉及从线程或派生的可执行文件运行系统调用。快速而肮脏的解决方案在幕后执行 shell 命令的 fork + exec

关于c - 从 C 执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49111201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com