아니면 함수 호출입니까? 함수 호출이 프로그램 내에서 호출되는 동안 시스템 호출은 시스템에서 서브 루틴 빌드에 대한 호출임을 알고 있습니다.프로그램은 리눅스에서 환경 변수의 값을 얻기 위해 시스템 호출을합니까?
1
A
답변
2
환경 변수를 읽을 때 시스템 호출이 수행되지 않습니다.
C API 수준에서 환경 변수는 세 번째 인수로 main
으로 전달됩니다. 완성 된 프로토 타입은 다음과 같습니다.
이 방법으로 main을 정의하면 환경을 읽는 데 함수 호출이 필요하지 않습니다.
다음 프로그램의 인쇄 환경 변수의 모든 : 물론
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[], char *envp[]) {
while(*envp) {
printf("%s\n", *envp);
envp++;
}
return 0;
}
, main
는 컴파일러의 런타임 지원 라이브러리에 의해 발명 뭔가입니다. OS에 관한 한 인터페이스는 다소 다릅니다. 그러나 같은 원칙이 여전히 남아 있습니다. 환경은 스택에 execve
이후에 새로 생성 된 프로그램에 전달됩니다.
getenv
이 char *
을 반환하는 이유이기도합니다. 아무것도 배정 할 필요가 없습니다. 이미 문자열이 있습니다.
편집 됨 : 시스템 호출시 특정 함수가 결과로 나오는지 여부를 아는 것은 매우 간단합니다. 코드 위에서 strace
을 실행하기 만하면됩니다. strace
은 모든 시스템 호출 만 트랩합니다. getenv
함수 호출이 보이지 않는 경우에는 시스템 호출이 아닙니다.
관련 문제
- 1. 시스템 속성과 환경 변수의 차이점
- 2. 변수의 값을 얻기 위해 JSON을 디코딩하는 방법
- 3. Java에서 전체 시스템 환경 경로 얻기
- 4. Java에서 환경 변수의 업데이트 된 사본 얻기
- 5. PyCharm에서 디버깅을 위해 환경 변수의 값을 전달하는 방법은 무엇입니까?
- 6. Java에서 환경 변수의 값을 가져 오는 중입니까?
- 7. Applescript에서 환경 변수의 값을 얻으려면 어떻게해야합니까?
- 8. `_dupenv_s` 함수가 값을 검색하는 환경 변수의 위치?
- 9. Jenkins 빌드 구성에서 환경 변수의 값을 추출하십시오.
- 10. 파이썬에서 시스템 상태 얻기
- 11. 리눅스에서 안전한 파이썬 환경
- 12. 환경 변수의 변경 사항은 파이썬
- 13. XSL 템플릿에 매개 변수의 값을 얻기
- 14. Android : 시스템 환경 설정 값을 얻는 방법
- 15. Android 시스템 환경 설정 값을 읽는 중
- 16. 포함하는 시스템 환경 변수 값을 쓰는 방법 =
- 17. 얻기 세션 변수의 값
- 18. Windows와 관련된 시스템 변수와 환경 변수의 차이점은 무엇입니까?
- 19. 는 값을 얻기 위해 노력
- 20. RegExpr을 얻기 위해 값을 얻으려면
- 21. 환경 변수의 SECRET_KEY 오류
- 22. 상위 프로그램은 리눅스에서 bash보다 루비에서 더 적은 값을 반환합니다.
- 23. 환경 변수의 순서는 % PATH %
- 24. 환경 변수의 SSH 키
- 25. Makefile 환경 변수의 금액
- 26. 공간이 포함 된 Jenkins 환경 변수의 값을 지정하는 방법
- 27. 프로세스의 환경 변수의 현재 값
- 28. 리눅스에서 C로 열린 시스템 호출
- 29. 리눅스에서 정적 시스템 라이브러리의 경로 찾기
- 30. Windows 시스템과 PowerShell의 환경 변수의 차이점은 무엇입니까?
안녕하세요. 이것은 프로그래밍과 관련이 없으므로 주제와 관련이 없습니다. 읽어 보시기 바랍니다 : https://stackoverflow.com/help/on-topic –
리눅스에서 glibc로 구현 한 것 같습니다. 나는 그것이 glibc에서 상응하는'syscall '을 수반하는지 모른다. 내가 그 프로세스의 환경 블록에서 사용할 수 있다고 믿은 이후로 나는 용의자가 아니다. GNU C 라이브러리 매뉴얼의 [25.4.1 환경 액세스] (https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html)도 참조하십시오. – jww
@MaciejJureczko 전 완전히 당신에 동의하지 않습니다. 이것은 정확히 SO가 대답하려고했던 질문과 같습니다. 초보자가 프로그래밍에 대해 이해하려고합니다. –