리눅스 시스템 프로그래밍 관련 system(); 함수 질문

seok0927의 이미지

안녕하십니까 리눅스시스템 프로그래밍을 하는중인데요

하나의 프로세스가 동작중 일 때 동작중인 프로세스가 다른 하나의 프로세스를 실행하고 싶을 때 다음과 같은 명령어로 동작을 시켜도 시스템상에서 안정적으로 동작을 할까요...?

system("sudo /home/user/a &");

단 두개의 프로세스는 병렬로 동작을 합니다.

세벌의 이미지

일단 해 보세요.
끝에 앰퍼센드 붙인 걸 보니 백그라운드로 돌리겠다는 건데...
sudo 를 하려는 거네요. 그럼 암호 입력 받아야 할텐데요.
백그라운드로 돌리면서 암호 입력을 어떻게 받으시나요?

seok0927의 이미지

동작은 합니다만..
현재 권한 수정으로 암호를 묻지 않고 있습니다.
몇몇 글을 찾아보니 system(); 함수와 같은 함수를 대다수의 개발자 분들은 권장하지 않더라구요.
외부에서 접근 할 수 없는 시스템이라 권한 문제는 걱정이 되지는 않습니다만..

김정균의 이미지

system function 을 사용하여 background 로 실행 하는 것 보다는 fork 를 이용하여 실행을 하는 것이 더 좋을 듯 싶습니다. fork 를 이용할 경우 child process 와의 연결이 가능 하므로 어느정도 제어 또는 상태 파악이 가능하기 때문입니다.

뭔 단순히 해당 명령이 수행만 시키면 되는 거라면 상관 없을수도요.