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