system()함수를 다르게 구현할수는 없을까요?

익명 사용자의 이미지

system(arg);

하면 인자속의 내용을 쉘이 해석해서 뿌려줍니다.

그런데.. 끝날때까지 다른 일을 못하더군요..

exec류의 함수는 인자를 정해줘야하구요..

입력받은 명령을 수행하고 싶은데. system()말고는 자유롭게 할수가

없군요

.. 방법이 없을까요?

익명 사용자의 이미지

fork하면 안될까요? )

pid = fork();

if child {
system('...');
} else {
...
}

Shell에서 프로그램을 수행하는 방식도 비슷하게
fork 시켜서 exec류 함수를 이용해
프로세스를 대체합니다.

익명 사용자의 이미지

exe류의 명령어도 인자없이 잘 됩니다.

execle("/bin/ls", "ls", (char *)0);

물론, 모두 fork() 해야 합니다.