2017-10-09 13 views
1

私はstackoverflowや他のサイトで同様の投稿を見ましたが、私の問題を解決できません。linuxシェルスクリプトの関数はCプログラムでは実行されません

#!/bin/sh 

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

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

Cコードに続く:

は、私は次のようconsoleout.shファイル持って

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

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

    system("a"); 
    return 0; 
} 

system("./consoleout.sh")なしに、それが正常に動作します。

+1

ていますか? –

答えて

3

systemはシェルの新しいインスタンスを呼び出し、2番目のシェルは最初のインスタンスで定義された関数について何も知らない。あなたは、しかし、最初のシェル内の関数を呼び出すことができます。

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

system()は、シェルを起動し、それが終了するのを待ちます。 system()の別の呼び出しは、最初から始まる別のシェルを作成します。

があなたのシェル関数を実行するには、それが定義されたシェルからそれを実行する必要があります。あなたは、このようなケースではCで `system`またはコードプログラムを使用していい

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

int main() 
{ 
    return system(". consoleout.sh; a"); 
} 
関連する問題