linux下execvp失败设置errno=7的原因是什么?
伊谢尔伦
伊谢尔伦 2017-04-17 15:30:43
0
4
767
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(4)
迷茫

감사합니다.
그런데 응답자 중 누구도 정답을 제시하지 못했습니다. 모든 정보를 제공하지 않은 것은 제 잘못입니다.
사실 코드 자체에는 문제가 없지만, 앞에 메모리 사용량을 제한하는 setrlimit 부분이 있는데, 설정 오류로 인해 메모리 상한이 너무 작아서 argv의 문자열은 저장할 수도 없습니다.
오류가 터무니없네요.
오류가 터무니없네요.
오류가 터무니없네요.
그러나 적어도 우리는 argv가 현재 프로세스의 메모리를 차지하지 않는다는 것을 알고 있습니다. :P

小葫芦

아래 코드를 보세요

으아아아

컴파일하고 실행한 결과는 다음과 같습니다

으아아아

execvp의 매개변수가 NULL

로 끝나지 않도록 코드를 수정하세요. 으아아아

컴파일 및 실행

으아아아

보시다시피 현재 환경 변수가 여기에 출력됩니다.
config->args가 NULL으로 끝나지 않고 환경 변수가 많으면 이런 일이 발생하나요?


코드를 자세히 읽지는 않았고 execvp 호출 부분만 간단히 살펴봤습니다.
execvp 성공 여부를 판단하지 않고 raise 함수를 직접 호출하셨습니다.
그러나raise 이 함수는 실행 중인 프로그램에 신호를 보내는 데 사용됩니다. 즉, 여기서 execvp를 호출하기만 하면 SIGUSR1 신호가 아무 사고 없이 전송됩니다.
errno은 전역 변수이므로 여기서는 execvp에 의해 설정된다는 의미는 아닙니다.

PHPzhong

ab를 백그라운드에 넣어두고 계속 오류가 난다면 ab실행 오류일 겁니다

左手右手慢动作

config->args 포인터 배열의 마지막 요소가 NULL으로 설정되지 않은 것 같습니다.

execvp은 널 포인터를 기준으로 목록의 끝을 결정합니다.

예:

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿