linux下c/c++程序重启自己

在程序自动升级的时候需要自己重新启动自己
示例代码:

点击(此处)折叠或打开

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char **argv)
  6. {
  7.     char buf[32] = {};
  8.     char *exec_argv[] = { argv[0], buf, 0 };
  9.     int count = argc > 1 ? atoi(argv[1]) : 0;
  10.  
  11.     printf("Running: %s %d\n", argv[0], count);
  12.     snprintf(buf, sizeof(buf), "%d", count+1);
  13.     sleep(5);
  14.  
  15.     execv("/proc/self/exe", exec_argv);
  16.  
  17.     /* NOT REACHED */
  18.     return 0;
  19. }

zengming@linux-eshv:~/test> g++ main.cpp
zengming@linux-eshv:~/test> ./a.out 1
Running: ./a.out 1
Running: ./a.out 2
Running: ./a.out 3
^C
程序员群:31843264

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值