python调用可执行文件

python调用可执行文件 2012-02-22 20:45:58

分类: Python/Ruby

今天用python写脚本的时候,突然遇到一个需求。因为其他人已经写好了一个工具,编好的binary文件。python脚本想要复用此工具。于是乎就有了下面的小实验。
主要是使用python中的pipe来完成此功能

首先C语言代码是hello world级别的代码
main.c:
  1. 19 #include <stdio.h>
  2.  20 int main(int argc, char *argv[])
  3.  21 {
  4.  22 int i = 0;
  5.  23 for (i = 0; i < argc; ++i)
  6.  24 {
  7.  25 printf("argv[%d]:%s\n", i, argv[i]);
  8.  26 }
  9.  27 return 0;
  10.  28 }
编译生成a.out

接下来就是python的实验代码:
popen_test.py:
  1. import os
  2.     def test():
  3.     p = os.popen('./a.out 12345', 'r')
  4.     while 1:
  5.         line = p.readline();
  6.         if '' == line:
  7.             break
  8.         print line
  9.  
  10. if __name__ == '__main__':
  11.     test()
然后命令行中输入
  1. python popen_test.py
最后结果如下所示
  1. argv[0]:./a.out

  2. argv[1]:12345

原理很简单,在python主进程中fork出来一个子进程,然后子进程执行传入的'common'命令,其中可以加入参数,以字符串形式传入。重定向子进程的标准输入输出到父进程pipe的两个文件描述符,然后就可像文件操作一样来操作子进程的输入、输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值