exec사용법에 대한 질문?
글쓴이: 제갈아찌 / 작성시간: 수, 2005/04/06 - 12:45오전
자식프로세스를 생성한다음에 exec를 사용해서 명령어를 실행하려구 하는데요..
인자가 여러개이면 exec를 사용할수 없나요..?
가령
execlp 인경우에
("cat", "cat", "/dev/ttyS0", ">>" ,"/tmp/data", (char *)0)
이렇게 사용하려구 하는데요 아무래도 인자가 하나밖에 실행이 안되는거 같아서요 여러개의 인자를 실행하려면 system을 사용해야 하나요..
답변 부탁드립니다. !!
Forums:
당연히 됩니다만...man 페이지를 보시면 다음과 같은 설명이 있습니다.
당연히 됩니다만...man 페이지를 보시면 다음과 같은 설명이 있습니다.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
중간에 리다이렉션을 쓰셨네요. pipe()를 쓰세요.리다이렉션은 쉘에
중간에 리다이렉션을 쓰셨네요. pipe()를 쓰세요.
리다이렉션은 쉘에서는 인자로 해석 가능할테지만 cat이 받게되면 잘못된 옵션이라고 나올것 같네요.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
감사합니다.
근데요.. 리다이렉션은 그럼 사용못하는건가요 .!!
어차피 파이프를 사용한다해도 제가 지금 하려는거에서는 다시 리다이렉션이
필요하게 되는거니까. 다른 방식으로 바꿔야 되는건가요;..
exec를 사용하려면 결국 리다이렉션을 피해서 다른 명령어를 사용해야 하는
건가요? 시스템 쪽에 입문한지 얼마 되지 않아 .. 아직은 어색어색 하네요
혹시 리다이렉션을 사용해서 다른 방법으로 해당 출력 스트림을 저장하는 좋은 팁이 있을까요 ?
답변 정말 감사드립니다. 좋은 하루되세요
nthroot님 말씀처럼 리다이렉트(>>)는 쉘에서 지원해주는
nthroot님 말씀처럼 리다이렉트(>>)는 쉘에서 지원해주는 것이므로,
프로그램에서는 리다이렉트를 사용하는게 아니라
리다이렉트를 구현해줘야 합니다.
cat의 표준출력을 /tmp/data로 보내고 싶은 것이므로
fork 후, execlp 전에
/tmp/data를 open() 하고,
STDOUT을 close() 하고,
open된 /tmp/data를 STDOUT으로 dup() 해주시면
원하시는 기능이 됩니다.
감사합니다.
이해했습니다.
첨에는 해깔렸는데 이렇게 사용하는거군요 ..!!
시스템 프로그래밍 한지 얼마안됐는데 빠져 드는 이기분 좋네요 !
감사드리구요 좋은하루되세요 ^^
댓글 달기