2 knight1840 knight1840 于 2015.07.14 19:00 提问

C中使用system() 调用了一个pyrhon脚本

调用了一个pyrhon脚本,类似于python /path/xxxx.py
但是,返回错误码256。不过我我在控制台直接执行python /path/xxxx.py 可以正常执行。。。求解,定位半天了,这会在下班回家路上,求解。。。

4个回答

Arnold9009
Arnold9009   2015.07.17 11:17
已采纳

system是个综合的操作,分解开来看就是相当于执行了
1 fork 生成一个子进程。
2 在子进程执行 execl("/bin/sh","sh","-c" command,(char*)0);
3 waitpid

下面进入正题,返回值:
1 如果fork失败了,或者waitpid返回除了EINTR之外的错误,system返回 -1;
2 execl执行失败,其返回值如同shell执行了"exit(127)" 一样。
3 如果上述三步都执行成功,那么,system返回值是shell的终止状态。

你的system返回256,表示还是正常执行了,shell命令的返回值是1

oyljerry
oyljerry   Ds   Rxr 2015.07.14 19:30

python进程本身也用全路径。同时py文件路径是否有空格。有的话就把整个路径引号起来

zuishikonghuan
zuishikonghuan   2015.07.14 20:55

用系统提供的接口吧,Windows有CreateProcess和ShellExecute,Linux有fork和exec函数族

caozhy
caozhy   Ds   Rxr 2015.07.15 05:58

这个取决于环境变量、路径等,最好对python的程序先打包成 exe 再调用。
http://blog.csdn.net/magictong/article/details/5979421

Csdn user default icon
上传中...
上传图片
插入图片