logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Linux C 언어로 Shell 명령어 실행하기

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

리눅스에서 C 언어로 코딩을 하다보면 Shell 명령어를 콜하고 싶을 때가 있습니다.

 
파일 처리를 한다던가 다른 프로세스나 데몬을 실행한다던가 하는 경우인데요.
 
이럴 경우 간단하게 처리하는 함수가  있습니다.
 
system 이라는 함수인데 다음과 같습니다.
 
       이름
                 system - shell 명령어 실행하기
 
          사용법
                 #include <stdlib.h>
 
                 int system (const char * string);
 
          설명
                 system() 함수는 /bin/sh -c string를호출하여 string 에 지정
                 된 명령어를 실행하며, 명령어가 끝난후 반환된다.  명령어 가
                 실 행되는 동안, SIGCHLD 는 블럭되며, SIGINT 그리고 SIGQUIT
                 는 무시된다.
 
          반환값
                 리턴된 값은만일 /bin/sh 을 위한 execve() 호출이 실패 한 다
                 면, 리턴된 값은 127 이며, 다른 에러가 있다면 -1, 그렇지 않
                 으면 명령어의리턴코드가 반환된다.
 
                 string 값이 NULL이라면, system() 은 shell을 이용할수 있 다
                 면 0 이 아닌 값을, 그렇지 않으면 0 값을 반환한다.
 
                 system()  은 어떤 다른 자식의 wait 상태에 영향을 주지 않는
                 다.
 

  
예제는 
 
int ret = system("ls -l");
 
 
 한가지 문제는 system 함수의 리턴 값으로는 실행한 shell 명령어나 프로세스의 결과를 리턴할 수 없다.
이런 경우에는 popen 함수를 이용해서 파이프를 통한 리턴 방법으로 구현해야 한다.
TAG •

List of Articles
No. Subject Author Date Views
23 [C/C++] Random UUID String 생성 코드 digipine 2021.10.21 1302
22 소켓 통신을 이용한 HTTP 서버 개발 강의록 file digipine 2020.08.01 1482
21 C++ Atomic 클래스에 대해서 file 엉뚱도마뱀 2017.12.13 2139
20 C++ 컴파일 오류(error): variable 'std::istringstream sstream' has initializer but incomplete type digipine 2017.11.02 21077
19 fopen 파일 열기 모드 옵션 정리 digipine 2017.11.02 3894
18 make -j 옵션으로 컴파일 속도 최적화 하기 digipine 2017.11.01 2759
17 [Linux] Pthread 사용법, Thread 동기화 총정리 digipine 2017.11.01 294048
16 [linux] zlib build 방법 digipine 2017.11.01 1483
» Linux C 언어로 Shell 명령어 실행하기 digipine 2017.11.01 22587
14 Introduce to Singly-linked List file digipine 2017.11.01 1288
13 [shared lib] so 동적 라이브러리 만들기와 사용법 - 리눅스 digipine 2017.11.01 6434
12 Unix C/C++ Input and Output Function Reference digipine 2017.11.01 88072
11 wchar_t에 대하여 digipine 2017.11.01 7343
10 C 에서 Overloading 구현 digipine 2017.11.01 1790
9 C를 이용한 객체지향 프로그래밍 digipine 2017.11.01 568
8 Callback in C++ 와 Delegate 차이점 digipine 2017.11.01 2525
7 Solaris에서 pmap을 이용하여 백그라운드 프로세스 메모리 크기 구하기 digipine 2017.10.29 28598
6 Solaris 10에 개발 Tool (gcc,vim,gdb) 설치 digipine 2017.10.29 1257
5 brute-force 알고리즘을 이용한 패턴 위치 찾기 digipine 2017.10.29 1501
4 MD5 파일 변조 검사 관련 소스 (리눅스/Windows) digipine 2017.10.29 2613
Board Pagination Prev 1 2 Next
/ 2