c语言使用system函数后台运行python脚本

        最近需要在c工程的mian函数中使用system函数调用一个shell脚本,shell脚本是用来将某些系统配置通过sock通信发送给主核进程,但是可能出现偶发性的配置失败情况,经过分析可以大概断定是由于sock通信的时候,主核进程正在忙于其他事物导致未能在expire之前将消息接受并处理,导致消息丢失,而发送方无法感知系统是否成功加载配置。

        所以,需要在脚本的最后启动一个python脚本去查询并校验配置结果。如果,校验失败且再最大重试次数以内的话,则重新发送配置并再次进行校验。但是,经过如下代码的验证,c语言中调用system()是阻塞型调用,会导致主进程等待,是不符合预期设计的。

main.c
-----------------------------------------------
#include <stdlib.h>
#include <stdio.h>

int main()
{
    system("/Users/heihei/Desktop/slp.cfg");
    printf("I ..........!\n");
    return 0;
}


slp.cfg
-----------------------------------------------
python /Users/heihei/Desktop/s.py


s.py
-----------------------------------------------
import time

if __name__ == "__main__":
    time.sleep(60)
    print("python test")

编译运行上述代码(等待60s后)会出现如下结果:

解决办法很简单就是将slp.cfg改为:

slp.cfg
-----------------------------------------------
python /Users/heihei/Desktop/s.py &

即可在后台运行了!

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值