2017-10-09 12 views
1

stackoverflow 및 다른 사이트에서 유사한 게시물을 보았지만 문제가 해결되지 않았습니다.리눅스 쉘 스크립트의 함수가 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은 새 쉘 인스턴스를 호출하고, 두 번째 쉘은 첫 번째 쉘에서 정의 된 함수에 대해 아무것도 모릅니다. 당신은,하지만, 처음 쉘에서 함수를 호출 할 수 있습니다 :

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

system()은 쉘을 호출하고 종료 할 때까지 기다립니다. system()에 대한 다른 호출은 처음부터 시작하는 다른 쉘을 작성합니다.

이 쉘 기능을 실행하려면이 정의 된 쉘에서 작업을 수행해야합니다 당신은 당신이 이러한 경우에 C에서`system` 또는 코드 프로그램을 사용 하시겠습니까

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

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