如何使用system()

时间:2017-07-27 11:39:32

标签: c linux

我有一个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

2 个答案:

答案 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()将返回最后一个的值命令脚本执行。