사용자의 쉘 구성 파일에서 (자동 생성 된 별칭 파일에. (실행) 명령을 사용하여) 해킹하는 프로그램이 있는데 문제가 있습니다. 상위 셸에서 명령을 실행하는 방법, 즉 새 셸을 분기하지 않고 명령을 실행하는 방법을 알아 냈습니다.쉘에서 명령을 실행하면 프로그램이 실행됩니다.
"프로그램"을 로그인 및 로그 아웃하지 않고 사용할 수 있도록 별칭 파일을 실행하는 명령 만 실행하면됩니다. 물론 포크 옆의 쉘과 상호 작용하는 또 다른 방법이 있어야합니다.
는N.B : 내가 모두 system()
및 execl()
를 사용하여 의미 "분기"라고 - 내가 말했듯이, 나는 프로그램이 아니라 그것의 새로운 인스턴스를 호스팅하는 쉘에 명령을 보내려고합니다.
적어도 (적어도 어떤 방법을 모르겠다) 생각하지는 않지만, 이미 생성 된 모든 별칭을 사용하여 프로그램에서 새 셸을 실행하지 않는 이유는 무엇입니까? 'sh'는'your_program && exit'를 실행하고,'your_program'은 필요한 것을 수행하고, 다른'sh'을 실행하여 사용자에게 명령 행을 제공합니다. 끝내면 첫 번째 'sh'도 종료됩니다. – afenster
나에게 어리석은 해결책처럼 보입니다. 내 말은, 실제적으로 말하는 껍질은 일반적으로 많은 자원을 차지하지는 않지만 좋은 이유가 없다면 무기로 포크로 들어가서 사치 스럽다. 그것이 유일한 방법이라면 나는 그것을 고려할 것이다. 감사. – Bridge
일반적으로 자식 프로세스는 부모 프로세스로 하여금 아무 것도 할 수 없습니다. 쉘이 작동하는 방식을 파괴하려고합니다. 그것을 성취 할 수있는 방법이 있을지 모르지만, 그것들은 기껏해야 비틀림을 당하고 아마도 휴대 가능하지 않을 것이며, '현실적'보다 더 '불가능하다'. 당신은 아마도 당신이하려고하는 것을 다시 생각할 필요가있을 것입니다. –