Linux 에서 C 언어 에서 셸 문 구 를 실행 합 니 다.

9058 단어
C 프로그램 이 셸 스 크 립 트 를 호출 하 는 방법 은 모두 세 가지 가 있 습 니 다: system (), popen (), exec 시리즈 수 callexec 1. c system () 은 프로 세 스 를 만 들 지 않 아 도 됩 니 다. 패키지 되 어 있 으 며 명령 에 직접 가입 합 니 다.exec 는 자신의 fork 프로 세 스 를 필요 로 하고 exec 자신의 명령 을 필요 로 합 니 다.popen () 도 명령 을 실행 할 수 있 습 니 다. system 보다 비용 이 적 습 니 다.
방법 1: system () 의 사용 system 명령 은 간략 하고 효율 적 인 작용 으로 광범 위 하 게 이용 되 고 다음은 함수 원형 이다.int system(const char *command);/home/farsight 에 test. sh 파일 을 새로 만 듭 니 다. 다음 과 같 습 니 다.
#!/bin/bash  
echo $HOME  
echo "the is test!"

test. c 파일 은 다음 과 같 습 니 다.
#include  
int   main()  
{  
	system("bash /home/farsight/test.sh");
	//system("/home/farsight/test.sh");//【另一种方法】
	return 0;    
}

다음 명령 을 실행 하여 컴 파일 합 니 다:
gcc test.c -o test  

테스트 명령:
./test

결 과 는 다음 과 같다.
the is test!

방법 2: popen () 사용
FILE *popen(const char *command, const char *type);  
int pclose(FILE *stream);

다른 것 은 변경 하지 않 고 test. c 파일 을 직접 수정 합 니 다.
#include  
int  main()  
{  	
	char buffer[80];  
   	FILE  *fp=popen("bash /home/farsight/test.sh","r");  
    
	fgets(buffer,sizeof(buffer),fp);  
	printf("%s",buffer);  
	pclose(fp);  
	return 0;  
}

방법 3: exec 함수 클 러 스 터
주의해 야 할 것 은 exec 는 1 개의 함수 가 아니 라 한 그룹의 함수 의 통칭 일 뿐 다음 6 개의 함 수 를 포함한다.
#include     
int execl(const char *path, const char *arg, ...);    
int execlp(const char *file, const char *arg, ...);    
int execle(const char *path, const char *arg, ..., char *const envp[]);    
int execv(const char *path, char *const argv[]);    
int execvp(const char *file, char *const argv[]);    
int execve(const char *path, char *const argv[], char *const envp[];   

이 6 개의 함수 이름 이 다 르 고 받 아들 이 는 매개 변수 도 다르다 는 것 을 알 수 있다.

좋은 웹페이지 즐겨찾기