program에서 shell command를 어떻게 하면 쓸수 있나요?

alexyoon의 이미지

device driver에서 shell command를 사용하고 그 결과를 받아 보고 싶습니다.
간단히 예를 들면 제가 코드 내에서 'ls /dev/vhdda'란 것을 shell에게 수행요청하고 그 결과를 프로그램 내에서 받아서 출력하려고 합니다.
어떤 방법이 있을까요?
혹은 무엇을 보고 참고 하면 될지 아시는 분 있으면 답변 부탁드립니다.

dreampia의 이미지

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