system()명령후의 실행결과(특히 오류발생 메세지)를 버퍼,또는
#include<stdlib.h>
#include<string.h>
main()
{
FILE *fd;
int i=0;
char temp[512];
char *cmd="mv abcd.dat ../"; /* 존재하지 않는 FILE를 move 함으로서 error를 발생시켜보았습니다. */
memset(temp,0,512);
if (( fd=popen(cmd,"r") ) == NULL)
while(fgets(temp, 512, fd))
{
printf("%s\n",temp);
i++;
memset(temp,0,512);
}
printf("total line : %d\n",i);
return 0;
}
/*----------------------------------------------------------------------*/
위와같을때,
system 명령이 성공했을경우
( 1.File(abcd.dat) 가 해당 디렉토리에 있거나,
2.ls 등 list가 콘솔에 출력되는 성공적인 command 등등..)
문제가 없지만,
실패했을경우
( 1.File(abcd.dat)가 없을경우,
2.lx 등 얼토당토않는 명령어를 수행시켜 오류메세지가 발생하는경우 등등..)
popen 명령의 결과는 NULL 값을 가져, 그 결과를 알수가 없었습니다.
성공 또는 특히 명령어 실패시 발생하는 에러의 메세지를 버퍼(또는 임의적으로 생성된 File)등에 기록하고 싶습니다.
그 방법을 가르쳐 주십시요..ㅠ.ㅠ
ps : 별도의 질문 하나~
유닉스에서의 I/O장치는 하나의 FILE로 인식한다 들었습니다.
하나의 특정프로세스가 발생시키는 출력내용(오류를 포함한 모든 출력)을 임의의 file에 저장할수 있을까요??
char *cmd="mv abcd.dat ../ 2> 파일명";
char *cmd="mv abcd.dat ../ 2> 파일명";
에러...가 ..파일로..--;
[KILL] 죽을각오로.........
댓글 달기