这几天在整decode的问题,由于代码是C的,而且完全重写成python 的话也比较麻烦把,里面各种位运算跟强制转换。所以就想到一个使用python调用C来解决这个问题
python调用C,这就涉及到一个叫命令行的东西,这几天也在用高通的qcat之类的工具,图形界面的确是给了我们很大的方便。
但是啊,程序还是命令行的强,命令行简单易懂,关键是就几个输入就几个输出,好了 开始这方面的演绎
先创建一个C程序 我的C程序如下
#include <stdio.h> int main(int argc,char**argv) { printf("hello\n");
//输出输入的第一个参数的值 printf("argc %d argv %s\n",argc,argv[1]); return 20; }
编译好之后 使用如下的.py 调用
import os data = " testdemo heheh" runcmd = './test' ret = os.system(runcmd + data) print(ret)
输出如下
hello //这个是C程序的输出 argc 3 argv testdemo //这个也是C程序的输出 5120 //51为上一个程序成功执行 20 为返回值
具体os.sytem() 函数的返回值信息如下博文 :http://xingyunbaijunwei.blog.163.com/blog/static/76538067201341342330373/
我这里也具体粘贴一下,恩 很长
"OS error code 1: Operation not permitted"
"OS error code 2: No such file or directory"
"OS error code 3: No such process"
"OS error code 4: Interrupted system call"
"OS error code 5: Input/output error"
"OS error code 6: No such device or address"
"OS error code 7: Argument list too long"
"OS error code 8: Exec format error"
"OS error code 9: Bad file descriptor"
"OS error code 10: No child processes"
"OS error code 11: Resource temporarily unavailable"
"OS error code 12: Cannot allocate memory"
"OS error code 13: Permission denied"
"OS error code 14: Bad address"
"OS error code 15: Block device required"
"OS error code 16: Device or resource busy"
"OS error code 17: File exists"
"OS error code 18: Invalid cross-device link"
"OS error code 19: No such device"
"OS error code 20: Not a directory"
"OS error code 21: Is a directory"
"OS error code 22: Invalid argument"
"OS error code 23: Too many open files in system"
"OS error code 24: Too many open files"
"OS error code 25: Inappropriate ioctl for device"
"OS error code 26: Text file busy"
"OS error code 27: File too large"
"OS error code 28: No space left on device"
"OS error code 29: Illegal seek"
"OS error code 30: Read-only file system"
"OS error code 31: Too many links"
"OS error code 32: Broken pipe"
"OS error code 33: Numerical argument out of domain"
"OS error code 34: Numerical result out of range"
"OS error code 35: Resource deadlock avoided"
"OS error code 36: File name too long"
"OS error code 37: No locks available"
"OS error code 38: Function not implemented"
"OS error code 39: Directory not empty"
"OS error code 40: Too many levels of symbolic links"
"OS error code 42: No message of desired type"
"OS error code 43: Identifier removed"
"OS error code 44: Channel number out of range"
"OS error code 45: Level 2 not synchronized"
"OS error code 46: Level 3 halted"
"OS error code 47: Level 3 reset"
"OS error code 48: Link number out of range"
"OS error code 49: Protocol driver not attached"
"OS error code 50: No CSI structure available"
"OS error code 51: Level 2 halted"
"OS error code 52: Invalid exchange"