안녕하세요..
조기.. 밑에 답변달았던 넘인데요..
execve에서 /bin/sh 말구여
딴걸로 테스트 해보심이..
sh를 다시 호출하면 부모 프로세스가 사라지지 않나 생각됩니다.
그래서 밑에 있는 프린트문이 안찍히는것 같네요..
그리고, argvr[2]에서요, /bin/ls -a를 실행시키시려고 한것 같은데
이게 execve의 첫번째 아규먼트로 와야 하지 않나요?
에궁.. 잘 몰르것심다..
: 우선 밑에 답변 달아주신분 감사합니다.
: 너무 바빠서 감사답변도 못달겠네요. 너그러이 생각해주세요.
:
: 다시 묻게 됐습니다. ㅡㅜ
: 시스템 콜함수 때문인데요..
: system을 쓰다가 안되서 execve을 씁니다.
: system을 쓰니까 어느부분에는 system을 인식하고
: 어떤부분에서는 system을 아예 무시하고 다음줄 소스부터
: 실행하더군요. 무슨 조화인지..
:
: 일단 소스 보여드릴께요
:
: main()
: {
:
: char co1<>="/bin/ls";
: char co2<>=" -al";
: char st2[100]={0};
:
:
: char *argvr[4];
: argvr[0]="bash";
: argvr[1]="-c";
: argvr[3]=0;
:
: strcat(st2,co1);
: strcat(st2,co2);
: argvr[2]=st2;
: execve("/bin/sh",argvr,(char *)0);
: printf("complete message!!! i want see.pleas");
:
: }
: 문제가 어떤거냐면 이놈을 실행시키면 execve까지 실행하고
: 그다음 printf절을 무시해버립니다. 혹시나해서 다르게 소스도
: 고쳐봤지만 execve실행하고 그다음 종료하고 빠져나가버리는것같더군요.
: 왜 이런거죠?
: execve저거 man페이지 뒤지면서 쓴건데 ㅡㅜ.. 틀렸나요?
:
: 시스템 콜함수에 대한 지식도 없는대다가 프로젝트는 해야겠고..
: 기한은 임박해오고 자꾸 질문드리는게 죄송스럽지만..
: 이렇게 밖에 해결할수가 없군요..
:
: --
:
: 좋은 하루되세요.--빡/센/여/름/을/보/내/장