device driver에서 shell command를 사용하고 그 결과를 받아 보고 싶습니다. 간단히 예를 들면 제가 코드 내에서 'ls /dev/vhdda'란 것을 shell에게 수행요청하고 그 결과를 프로그램 내에서 받아서 출력하려고 합니다. 어떤 방법이 있을까요? 혹은 무엇을 보고 참고 하면 될지 아시는 분 있으면 답변 부탁드립니다.
FILE *popen(const char *command, const char *mode);
popen으로 열고 fread, fwrite등 일반 FILE i/o에 사용하는 함수 그대로 사용해서 처리하면 됩니다..
strcpy(cmd, "ps -eopid,comm | grep abcd"); if ((pfp = popen(cmd, "r")) == (FILE *) NULL) return(ERROR); while (fgets(buffer, 200, pfp) != NULL) { if ((tok = strtok(buffer, " \n")) == NULL) continue; pid = atol(tok); if ((tok = strtok(NULL, " \n")) == NULL) continue; strcpy(exec_file, tok);
>/dev/null 2>&1
popen함수 사용하시면 됩니다.
popen으로 열고 fread, fwrite등 일반 FILE i/o에 사용하는 함수 그대로 사용해서 처리하면 됩니다..
strcpy(cmd, "ps -eopid,comm | grep abcd"); if ((pfp = popen(cmd, "r")) == (FILE *) NULL) return(ERROR); while (fgets(buffer, 200, pfp) != NULL) { if ((tok = strtok(buffer, " \n")) == NULL) continue; pid = atol(tok); if ((tok = strtok(NULL, " \n")) == NULL) continue; strcpy(exec_file, tok);>/dev/null 2>&1