【问题标题】:function from linux shell script not execute in c program来自linux shell脚本的函数不在c程序中执行
【发布时间】:2017-10-09 11:08:15
【问题描述】:

我在 stackoverflow 和其他网站上看到过类似的帖子,但我找不到解决问题的方法。

我有以下consoleout.sh 文件:

#!/bin/sh

#this way works in c:
#echo "Hello World!"

#but in function does not work:
a(){
  echo "Hello World!"
}

以下 C 代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    system(".  consoleout.sh"); 

    system("a");
    return 0;
}

没有system("./consoleout.sh"),它工作正常。

【问题讨论】:

  • 在这种情况下您确定要使用system 或用C 编写程序吗?

标签: c linux system


【解决方案1】:

system() 调用一个 shell 并等待它终止。再次调用 system() 将创建一个从头开始的不同 shell。

要运行您的 shell 函数,您需要从定义它的 shell 执行它:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    return system( ".  consoleout.sh; a" ); 
}

【讨论】:

    【解决方案2】:

    每个system 调用一个新的shell 实例,第二个对第一个中定义的函数一无所知。不过,您可以在第一个 shell 中调用该函数:

    system(". consoleout.sh ; a");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2014-03-26
      • 2011-04-13
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多