我怎么能用C语言关闭linux程序呢?我正在编辑一个脚本,让它有一个计时器,脚本只运行10秒,然后关闭。我要说的是:./startmerge公司这是一个C代码,将我下载的所有服务器文件合并在一起,但我只希望它运行10秒。 最佳答案 如果大部分时间都花在使用CPU进行计算上(换句话说,如果./startmerge中的10秒没有花在IO上),则需要限制CPU时间,因此使用setrlimit(2)系统调用与RLIMIT_CPU一起使用。在bash中,您想要使用它的内置函数(callingulimitsyscall),请参见 ulimit -t 10在运行setrlimit之前。如果您的startmerge不是CPU密集型,您可能希望在10秒后startmerge它(请参见this answer) startmerge & ; pidof_startmerge=$! sleep 10; kill $pidof_startmerge更好的方法是,使其成为一个循环(例如,围绕akill循环十次)如果您可以访问sleep 1的C源代码并想要改进它,请先阅读this和time(7)。正如signal(7)所评论的,考虑Duck或alarm(2)或setitimer(2)并设置一个信号处理程序-例如,对于startmerge和timer_create(2)(但不要忘记,信号处理程序仅限于调用异步信号安全函数;您可以在其中设置一个全局SIGALRM变量,并在外部测试该变量)。如果在某些复用的基础上,比如在 >(或旧的volatile sig_atomic_t >)中,您的 > > > > > >,那么它应该更简单,而Linux特有的 >可能非常有用。您可以在bash中捕获startmerge,请参见sigaction(2)。event loop有一些章节和你的问题有关。poll(2)对阅读也很有用。
10-08 03:50