다른 사용자 권한을 가진 파일에 에코

다른 사용자 권한을 가진 파일에 에코

root아래와 같이 다양한 사용자가 파일 쓰기를 구현하려고 합니다 . 그러나 파일이 생성되었지만 아무것도 기록되지 않습니다.

system("(echo 'ab' | su - root -c "echo 'Logging Enabled' |tee myLog.txt")>/dev/null");

또한 >대신 시도했습니다.tee

system("(echo 'ab' | su - root -c "echo 'Logging Enabled' > myLog.txt")>/dev/null");

이 목표를 달성하는 더 좋은 방법이 있습니까?

감사해요

답변1

귀하의 질문에서 실제로 파일에 어떤 텍스트를 표시하려는지 명확하지 않습니다.

쉘에서는 할 수 있습니다

echo 'ab' | sudo tee myLog.txt

myLog.txt표준 출력에 "ab"를 씁니다 . 사용 이유는 tee일반적으로 권한 있는 사용자로 쉘을 실행할 필요가 없고 표준 출력으로의 출력이 실제로 필요한 것이 아니기 때문에 이를 억제하기 위해 리디렉션을 추가할 수 있는 부작용 때문입니다.

echo 'ab' | sudo tee myLog.txt >/dev/null

안에체계(삼)C 코드에서 호출하려면 간단히 문자열에 넣으면 됩니다.

system("echo 'ab' | sudo tee myLog.txt >/dev/null");

다음은 본질적으로 정의되지 않았습니다.

echo 'ab' | echo 'Logging enabled'

그러나 일반적으로 "ab"는 단순히 폐기됩니다. 왜냐하면 두 번째 것은 echo아무 작업도 수행하지 않고 자체 출력을 생성하기 때문입니다. 두 개의 텍스트 조각을 결합하려면 다음과 같이 시도하십시오.

printf "%s\nLogging enabled\n" "$(echo ab)"

그러나 이 두 개의 개별 명령문으로 무엇을 하려는지 echo, 그렇다면 이를 처리하는 방법은 매우 불분명합니다.

(분명한 점을 다시 말하면, a | b표준 출력을 a표준 입력 에 연결하고 두 프로세스를 병렬로 실행하면 표준 입력은 여전히 ​​의 표준 입력 및 표준 출력 b에 연결됩니다 .)ab

관련 정보