system 다른 프로그램 실행 및 대기
2007.10.09 16:16:39 (*.233.135.85)
22587
| 설명 | 다른 프로그램을 실행하고 종료할 때까지 기다립니다. 예제를 먼저 보시겠습니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
system( "ls -al");
printf( "system() 시행 후에, 이 문자열이 출력됩니다.n");
}
실행하면 아래와 같이 출력됩니다.
]$ ./a.out
합계 72
drwxr-xr-x 2 jwjw jwjw 4096 9월 30 13:41 .
drwxr-xr-x 7 jwjw jwjw 4096 9월 25 06:20 ..
-rwxrwxr-x 1 jwjw jwjw 4815 9월 30 13:41 a.out
-rw-r--r-- 1 jwjw jwjw 146 9월 30 13:41 test.c
-rw-r--r-- 1 jwjw jwjw 18 9월 25 13:00 test.txt
system() 시행 후에, 이 문자열이 출력됩니다.
]$ 다른 프로그램을 실행할 수 있어 좋지만, 종료될 때까지 대기하는 것이 싫다면 fork()문을 사용하여 자식 프로세스를 생성하고, 자식 프로세스에서 실행하시면 되겠습니다.
#include <stdio.h> // printf()
#include <stdlib.h> // system()
#include <unistd.h> // fork(), sleep()
int main()
{
int counter =0;
switch( fork())
{
case -1 :
{
printf( "자식 프로세스 생성 실패n");
return -1;
}
case 0 :
{
printf( "저는 자식 프로세스로 system()을 호출하겠습니다.n");
system( "ls -al /");
break;
}
default :
{
printf( "저는 부모 프로세스로 카운트를 하겠습니다.n");
while( 1 )
{
printf( "부모: %dn", counter++);
sleep( 1);
}
}
}
}
]$ ./a.out
]$ ./a.out
저는 자식 프로세스로 system()을 호출하겠습니다.
저는 부모 프로세스로 카운트를 하겠습니다.
부모: 0
합계 166
drwxr-xr-x 24 root root 4096 9월 29 21:20 .
drwxr-xr-x 24 root root 4096 9월 29 21:20 ..
-rw-r--r-- 1 root root 0 9월 29 21:20 .autofsck
-rw-r--r-- 1 root root 0 9월 12 00:00 .autorelabel
drwxr-xr-x 2 root root 4096 9월 12 19:25 bin
drwxr-xr-x 4 root root 1024 9월 11 23:51 boot
drwxr-xr-x 9 root root 3640 9월 29 21:20 dev
drwxr-xr-x 94 root root 12288 9월 29 22:26 etc
drwxr-xr-x 4 root root 4096 9월 11 23:38 home
drwxr-xr-x 14 root root 4096 9월 12 19:19 lib
drwx------ 2 root root 16384 9월 11 22:45 lost+found
drwxr-xr-x 2 root root 4096 9월 11 23:38 media
drwxr-xr-x 2 root root 0 9월 29 21:20 misc
drwxr-xr-x 2 root root 4096 3월 30 2007 mnt
drwxr-xr-x 2 root root 0 9월 29 21:20 net
drwxr-xr-x 2 root root 4096 3월 30 2007 opt
dr-xr-xr-x 102 root root 0 9월 29 21:19 proc
drwxr-xr-x 4 root root 4096 9월 14 10:25 qt
drwxr-x--- 18 root root 4096 9월 30 13:26 root
drwxr-xr-x 2 root root 12288 9월 12 19:25 sbin
drwxr-xr-x 2 root root 4096 9월 11 22:46 selinux
drwxr-xr-x 2 root root 4096 3월 30 2007 srv
drwxr-xr-x 11 root root 0 9월 29 21:19 sys
drwxrwxrwt 7 root root 4096 9월 30 14:04 tmp
drwxrwxrwx 17 root root 4096 7월 1 2005 usr
drwxr-xr-x 23 root root 4096 9월 11 23:31 var
부모: 1
부모: 2
부모: 3
부모: 4
부모: 5 | | 헤더 | stdlib.h | | 형태 | int system (const char * string); |
|
| 인수 | char string | 실행할 프로그램 파일 명 | | 반환 | int | 127 : /bin/sh 을 위한 execve() 호출에 실패 -1: 127 이외의 다른 에러 발생 0: 함수 실해에 성공 지정한 프로그램 파일이 없거나 어떤 문제로 shell을 이용할 수 없다면, -1, 0, 127 이외의 값을 반환합니다.
|
|
|
|
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.