리눅스에서 char *com; 형으로 문자열을 저장하였습니다. 이 문자열은 명령어 입니다. 이 문자열을 사용하여 그대로 실행할수 있는 방법이 없습니까? 제발좀 알려주세요.
#include int execl(const char *path, const char *arg0, ..., const char *argn, char * /*NULL*/); int execv(const char *path, char *const argv[]); int execle (const char *path,char *const arg0[], ... , const char *argn, char * /*NULL*/, char *const envp[]); int execve (const char *path, char *const argv[], char *const envp[]); int execlp (const char *file, const char *arg0, ..., const char *argn, char * /*NULL*/); int execvp (const char *file, char *const argv[]);
이렇게 여러가지 함수가 있네요. ^^ execl()함수를 사용하면 편리할 것이예요. 용도에 맞게 골라서 사용해 보세요.
자세한 사항은 man execl 해서 보세요. ^^
즐거운 프밍 하세요~
#include int system(const char *string);
를 사용해서 간단하게 할 수 있지 않을까요?? 문제를 잘못 이해한건 아닌지 ㅡㅡ;;; 허접 답변이엇슴돠!!
#include int system(const char *string); 원래 시스템 함수가 이 형태인가요? 그렇다면 문제 끝인데.. 보통 사용할때 system("ls -al"); 이렇게 사용하잔아요 근데 ""데신 문자열 포인터를 지정해도 되나요? 그럼 문제 끝인데.. 고맙습니다..
이것들은 사용해 봤는데.. 실행파일의 경로를 정해줘야 하잔아요.. 근데 컴파일은 돼는데 버그가 심해서.. 답변 고맙습니다.. 리눅스 프로그래밍 세칸에디션 내용이네요... 저두 이책 무지 좋아하는 데..
다른방법 아시면... 갈쳐주세요..
정말 고맙습니다.
네 맞아요,
system()함수와 execl 함수의 차잇점은..
system()함수는 인자값마저 모조리 한개의 파라미터로 넘겨주는 것입니다,
execl()함수는 요앞에 썼듯이 인자값이 여러개죠? execl("화일이름", "옵션1", "옵션2"....) 이렇게 사용 합니다.
man -s 2 execl
위와 같은 명령을 넣고 싶다고 해보죠. 그렇다면은 system()함수는..
system("man -s 2 execl");
이라고 하면 되겠죠?
하지만 execl() 함수를 사용한다면,
execl("man", "-s", "2", "execl");
이렇게 해주면 되는 것입니다. ^^
수고하세요.
"...." 가 문자열 포인터 입니다.
c 관련 책에서 포인터 부분을 더 보세요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: c프로그램좀 도와주세요.
#include
int execl(const char *path, const char *arg0, ...,
const char *argn, char * /*NULL*/);
int execv(const char *path, char *const argv[]);
int execle (const char *path,char *const arg0[], ... ,
const char *argn, char * /*NULL*/, char *const envp[]);
int execve (const char *path, char *const argv[],
char *const envp[]);
int execlp (const char *file, const char *arg0, ...,
const char *argn, char * /*NULL*/);
int execvp (const char *file, char *const argv[]);
이렇게 여러가지 함수가 있네요. ^^
execl()함수를 사용하면 편리할 것이예요.
용도에 맞게 골라서 사용해 보세요.
자세한 사항은 man execl 해서 보세요. ^^
즐거운 프밍 하세요~
Re: c프로그램좀 도와주세요.
#include
int system(const char *string);
를 사용해서 간단하게 할 수 있지 않을까요??
문제를 잘못 이해한건 아닌지 ㅡㅡ;;;
허접 답변이엇슴돠!!
Re^2: c프로그램좀 도와주세요.
#include
int system(const char *string);
원래 시스템 함수가 이 형태인가요?
그렇다면 문제 끝인데..
보통 사용할때
system("ls -al");
이렇게 사용하잔아요 근데 ""데신 문자열 포인터를 지정해도 되나요?
그럼 문제 끝인데..
고맙습니다..
Re^2: c프로그램좀 도와주세요.
이것들은 사용해 봤는데.. 실행파일의 경로를 정해줘야 하잔아요..
근데 컴파일은 돼는데 버그가 심해서..
답변 고맙습니다..
리눅스 프로그래밍 세칸에디션 내용이네요... 저두 이책 무지 좋아하는
데..
다른방법 아시면... 갈쳐주세요..
정말 고맙습니다.
Re^3: c프로그램좀 도와주세요.
네 맞아요,
system()함수와 execl 함수의 차잇점은..
system()함수는 인자값마저 모조리 한개의 파라미터로 넘겨주는 것입니다,
execl()함수는 요앞에 썼듯이 인자값이 여러개죠?
execl("화일이름", "옵션1", "옵션2"....)
이렇게 사용 합니다.
man -s 2 execl
위와 같은 명령을 넣고 싶다고 해보죠.
그렇다면은 system()함수는..
system("man -s 2 execl");
이라고 하면 되겠죠?
하지만 execl() 함수를 사용한다면,
execl("man", "-s", "2", "execl");
이렇게 해주면 되는 것입니다. ^^
수고하세요.
Re^3: c프로그램좀 도와주세요.
"...." 가 문자열 포인터 입니다.
c 관련 책에서 포인터 부분을 더 보세요.
댓글 달기