我有一个用system()从c程序调用的bash脚本(一个非常基本的脚本)。
此脚本调用另一个名为./dslite.sh的脚本,该脚本将固件闪存到设备。
如何将./dslite.sh返回的值返回给c程序?
C程序:
system("flash_firmware.sh");脚本
#!/bin/bash
./dslite.sh --mode flash --config=~/configs/device1_config/c1dut2.ccxml ~/images/$1发布于 2017-07-27 19:43:31
来自the Bash manual page的关于EXIT STATUS的部分
Bash本身返回执行的最后一个命令的退出状态,除非发生语法错误,在这种情况下,它将以非零值退出。
这意味着脚本的退出代码将是./dslite.sh脚本的退出代码。
换句话说,您不应该做任何事情,system函数的返回值应该是./dslite.sh返回的值。
另一方面,如果您指的是脚本打印的输出,那么请改用popen。
发布于 2017-07-27 19:41:38
system()的原型是:
int system(const char *command);它确实返回了一个int。
以下摘录来自system()的手册页:
如果所有系统调用都成功,则返回值是用于执行命令的子shell的终止状态。( shell的终止状态是它执行的最后一个命令的终止状态。)
因此,只要在创建shell或shell的相应子进程时没有错误,system()就会返回脚本执行的最后一个命令的值。
https://stackoverflow.com/questions/45349764
复制相似问题