C언어에서 본쉘로 짠 스크립트 처리 방법

C언어에서 bash script를 사용하려고 합니다. bash스크립트 파일을 실행시키는 것이 아니라

아래 소스와 같이 bash script를 define문으로 정의한 후 프로그램 자체에서 실행시키려고 하는데 생각처럼 실행이 되지 않네요

#define RESSHELL "/bin/sh -c '\
OS_CHECK_CMD=uname\r\n\
echo $OS_CHECK_CMD\r\n\
OS_CHECK_CMD_PATH=`command -v $OS_CHECK_CMD`\r\n\
echo $OS_CHECK_CMD_PATH\r\n\
'\
"

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define MAXLINE 256

int main()
{
    FILE *fp;
    int state;

    char buff[MAXLINE];
    fp = popen(RESSHELL, "r");

    if (fp == NULL)
    {
        perror("erro : ");
        exit(0);
    }

    while(fgets(buff, MAXLINE, fp) != NULL)
    {
        printf("%s", buff);
    }

    state = pclose(fp);
}

위의 코드를 실행시키면 /usr/bin/uname이 출력되어야하는데 공백이 출력이 됩니다.

OS_CHECK_CMD_PATH=`command -v $OS_CHECK_CMD`\r\n\

이 부분에서 OS_CHECK_CMD_PATH에 결과값이 저장이 안되는거 같은데 어떻게 해야 할까요?

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.